PHP/jQuery - получение содержимого html тега <title> xxx</title>

109
12

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SOMETITLE</title>
</head>

<body>
<a href="http://www.facebook.com/sharer.php?u=<?php echo $url ?>&t=XXX">click</a>
</body>
</html>


Я хочу использовать php/jQuery для получения содержимого под <title></title> и поместить его в XXX на <a href="http://www.facebook.com/sharer.php?u=<?php echo $url ?>&t=XXX">, как это сделать?


Обновлено 2


<?php

$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

?>

<div id="language">
<ul>
<li class="last">
<span><a id="block-header-facebook" href="http://www.facebook.com/sharer.php?u=<?php echo $url ?>&t=link"><img src="/home/images/icon/facebook.jpg" /></a></span><span><a href="#"><img src="/home/images/icon/twitter.jpg" /></a></span></li>
</ul>
</div>

<script>
$('#block-header-facebook').attr('href').replace("link", "hi");
</script>


Спасибо вам

спросил(а) 2021-01-19T18:03:23+03:00 6 месяцев назад
1
Решение
90

Используйте jQuery (просто измените селектор $( "a" ) более конкретным, используя id или класс):


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SOMETITLE</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$("a").each(function() {
$(this).attr("href",
$(this).attr("href").replace("XXX", $("html head title").text())
);
});
});
</script>
</head>

<body>
<a href="http://www.facebook.com/sharer.php?u=<?php echo $url ?>&t=XXX">click</a>
</body>
</html>


Для обновления 2 измените элемент script:


<script type="text/javascript">
$('#block-header-facebook').each(function() {
$(this).attr('href', $(this).attr('href').replace("link", document.title));
});
</script>

Кстати, я тоже рекомендую использовать подход сервера Ralph (используйте это, только если вам нужно сделать это на клиенте).

Добавлена ​​Рекомендация (см. комментарий Ральфа)


Измените a-tag и script на:


<a id="block-header-facebook" href="http://www.facebook.com/sharer.php?u=<?php echo $url ?>">

<script type="text/javascript">
$('#block-header-facebook').each(function() {
$(this).attr('href', $(this).attr('href') + "&t=" + escape(document.title));
});
</script>


Меньше подвержен ошибкам код, и я буду работать одинаково.

ответил(а) 2021-01-19T18:03:23+03:00 6 месяцев назад
46

есть простая функция, которую вы можете использовать на этой странице

http://www.phpro.org/examples/Get-Text-Between-Tags.html

ответил(а) 2021-01-19T18:03:23+03:00 6 месяцев назад
45

<?php
$title = 'SOMETITLE';
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $title ?></title>
</head>

<body>
<a href="http://www.facebook.com/sharer.php?u=<?php echo $url,'&t=',urlencode($title); ?>">click</a>
</body>
</html>


Я думаю, что всегда предпочтительнее делать это на стороне сервера, если сможете. Меньше вычислений для клиента, меньше проблем с JS-зависимостями/кросс-браузером, и нет "времени ожидания".


Urlencoding не требуется в этом примере, но это будет, если ваш заголовок содержит пробелы и другие странные символы.

ответил(а) 2021-01-19T18:03:23+03:00 6 месяцев назад
46

Или с JavaScript:


var link = document.getElementsByTagName("a")[0].href;
link = link.replace(/&t=.+$/, "&t=" + document.title);
document.getElementsByTagName("a")[0].href = link;

ответил(а) 2021-01-19T18:03:23+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема