PHP: Как вывести title текущей страницы в виде текста\ссылки на той же странице

kov
На сайте с 04.11.2016
Offline
19
kov
3429

Привет всем, помогите разобраться.

Нужно вывести title текущей страницы в виде текста\ссылки на той же странице с помощью php.

Искал в инете и нашел 2 скрипта (по сути один и тот же), которые работают так как надо, но с ошибками. Подскажите, пожалуйста, что нужно подправить. Буду благодарен.

<?php

$page_content = file_get_contents (__FILE__);
preg_match_all("#.*<title>(.+)<\/title>.*#isU", $page_content, $titles);
print_r ($titles);
?>

<?

$BadTitle=preg_replace("#.*<title>(.+)<\/title>.*#isU","\\1",preg_replace("#<\?(php)?(.+)\?".">#iUs","",file_get_contents(__FILE__)));
if ($BadTitle)
print "<a href='{$_SERVER['REQUEST_URI']}'>$BadTitle</a>";
?>
Купить дешево домен с Яндекс ИКС от 20 до 200! (/ru/forum/1010403).
ДП
На сайте с 23.11.2009
Offline
203
#1

Как бы "так как надо" и "с ошибками" - это вещи разные.

Первый скрипту вас в принципе отрабатывает? т.е. выводит найденный тайтл?

потому что получение содержимого страницы через __FILE__ в общем случае не всегда будет работать.

У вас самопис какой-то или, может быть, движок?

Вам эта ссылка обязательно нужна индексируемая, что вы на php это хотите сделать? потому что на том же js оно попроще будет - там меньше тонкостей, если у вас не spa только.

В
На сайте с 04.07.2017
Offline
23
#2
kov:
Нужно вывести title текущей страницы в виде текста\ссылки на той же странице с помощью php.

откуда в title берется текст? из бд?

E
На сайте с 31.05.2015
Offline
66
#3

Действительно, расскажите откуда берется сам <title>. Определите этот <title> в любую переменную и делайте с ней что хотите.

PN
На сайте с 22.08.2012
Offline
103
#4
kov:
Привет всем, помогите разобраться.

Нужно вывести title текущей страницы в виде текста\ссылки на той же странице с помощью php.

Искал в инете и нашел 2 скрипта (по сути один и тот же), которые работают так как надо, но с ошибками. Подскажите, пожалуйста, что нужно подправить. Буду благодарен.

<?php

$page_content = file_get_contents (__FILE__);
preg_match_all("#.*<title>(.+)<\/title>.*#isU", $page_content, $titles);
print_r ($titles);
?>


<?

$BadTitle=preg_replace("#.*<title>(.+)<\/title>.*#isU","\\1",preg_replace("#<\?(php)?(.+)\?".">#iUs","",file_get_contents(__FILE__)));
if ($BadTitle)
print "<a href='{$_SERVER['REQUEST_URI']}'>$BadTitle</a>";
?>

Объясните для начала, зачем это нужно. Я не могу представить себе задачу, в которой тег title заполняется независимо от PHP.

Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1
D.iK.iJ
На сайте с 26.05.2013
Offline
224
#5
proksey-net:
Объясните для начала, зачем это нужно. Я не могу представить себе задачу, в которой тег title заполняется независимо от PHP.

Например, у меня на 100% сайтов и страниц. Так как они статические и подключен только хедер и футер:

<!DOCTYPE html>
<html>
<head>
<meta name="KEYWORDS" content="{keywords}, Интересные статьи, Дикий, dikij, дик, D.iK.iJ, автор, домашняя страница, книги, фото, картинки, романы, рассказы, блог, блоггер, Алена, чат, гостевая, PHP, скрипты бесплатно, Ребуквер, кодер, Каменск Уральский, погода, Java, script, J.S., Львы">
<meta name="DESCRIPTION" content="{description}">
<title>{title}</title>
<?php
require(getenv("DOCUMENT_ROOT")."/header.php");
?>
<center><h1>{header}</h1></center>

{body}

<?php require(getenv("DOCUMENT_ROOT")."/fooooter.php"); ?>

Все что в { } - подставляется вручную или через редактор - автоматом. :)

И да, чтобы потом получить список всех страниц, нужен или какой-то сервис или скрипт.

---------- Добавлено 20.09.2017 в 18:40 ----------

Да! Так как мне лень делать регекспы, скрипт написал бы такой:

<?
$file="";
$content=file_get_contents("http://dikij.com/".$file);
$content=eregi_replace(".*<title>", "", $content); // Обрезать до текста
$content=eregi_replace("</title>.*", "", $content); // Обрезат после текста
echo $content;
?>

Ну и дальше там запись в файл, кодировка и все такое прочее.

Адаптивный дизайн в 2 строчки ( https://dikij.com/wm/adaptaciya-saytov.php ). + Принимаю заказы любой сложности ( https://searchengines.guru/ru/forum/926323 ). 💎 Еще я делаю классные кулоны с опалами ( https://mosaicopal.ru/ ).
kov
На сайте с 04.11.2016
Offline
19
kov
#6
Evilruby:
Действительно, расскажите откуда берется сам <title>. Определите этот <title> в любую переменную и делайте с ней что хотите.

Тайтл берется из тегов <title></title>, сайт - простой html, тайтл статистический.

---------- Добавлено 20.09.2017 в 16:45 ----------

Дикий пионер:
Как бы "так как надо" и "с ошибками" - это вещи разные.
Первый скрипту вас в принципе отрабатывает? т.е. выводит найденный тайтл?

В первом случае тайтл на старице выводится, но так же и выводится еще и какие-то крякозабры, пример:

Array ( [0] => Array ( [0] => ) [1] => Array ( [0] => Тайтл моего сайта) )

Во втором случае тайтл на старице выводится, но так же, почему-то, скрипт еще и копирует саму страницу (в том месте где он вставлен) начиная с тега </title>, и получается что-то такое (код):


<html>
<head>
<title>Тайтл моего сайта</title>
</head>
<body>
Текст странички моего сайта

Тайтл моего сайта
</head>
<body>
Текст странички моего сайта
<body>
</html>

<body>
</html>

Samail
На сайте с 10.05.2007
Offline
361
#7
kov:
сайт - простой html

Так наверное не текущей страницы, а какой-то страницы по ссылке, вы всех запутали.

kov:
В первом случае тайтл на старице выводится, но так же и выводится еще и какие-то крякозабры, пример:

Код:

Array ( [0] => Array ( [0] => ) [1] => Array ( [0] => Тайтл моего сайта) )


<?php
$page_content = file_get_contents (__FILE__);
preg_match_all("#.*<title>(.+)<\/title>.*#isU", $page_content, $titles);
echo $titles[1][0];
?>
kov
На сайте с 04.11.2016
Offline
19
kov
#8
Samail:
Так наверное не текущей страницы, а какой-то страницы по ссылке, вы всех запутали.

Я имел ввиду тайтл той страницы, на которой сейчас находится посетитель.


<?php
$page_content = file_get_contents (__FILE__);
preg_match_all("#.*<title>(.+)<\/title>.*#isU", $page_content, $titles);
echo $titles[1][0];
?>

Да, оно, работает. ☝

Всем спасибо за помощь. ;)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий