Как автоматом заполнить <title> текстом из <h1>?

12
crk
На сайте с 23.05.2007
Offline
58
crk
#11
solnikolay:
crk, он работает. Просто кто-то не захотел туда вывод добавить: print $str;

Сделал следующее:

<?php
print $str ='<html>

<head>

<title></title>
</head>


<body>
<h1>Текст нужный в тайтле.</h1>
<p>Какой-то, неважный нам, текст.</p>
</body>

</html>';

preg_match("|<h1>(.*)</h1>|imsU", $str, $title);
$str = str_replace('<title></title>', '<title>' . $title[0] . '</title>', $str);
?>

Тайтл пустой.

DI
На сайте с 03.01.2007
Offline
123
#12

естественно он будет пустой, ведь сначала идет вывод, а потом только замена.

$str = '..[то, что сейчас есть]..';

preg_match("|<h1>(.*)</h1>|imsU", $str, $title);

$str = str_replace('<title></title>', '<title>' . $title[0] . '</title>', $str);

print $str;

ОФФ в тему: http://bash.org.ru/quote/393352

Высказывание идиотского утверждения требует на порядок меньше усилий, чем его последовательное и обоснованное опровержение и более того, иногда это опровержение вообще невозможно. © (http://zhurnal.lib.ru/s/shapiro_m_a/raspidiota.shtml)
crk
На сайте с 23.05.2007
Offline
58
crk
#13
DenIT:
естественно он будет пустой, ведь сначала идет вывод, а потом только замена.

$str = '..[то, что сейчас есть]..';
preg_match("|<h1>(.*)</h1>|imsU", $str, $title);
$str = str_replace('<title></title>', '<title>' . $title[0] . '</title>', $str);
print $str;

ОФФ в тему: http://bash.org.ru/quote/393352

Спасибо, исправил.

Но теперь тайтл у мень такой: <h1>Текст нужный в тайтле.</h1> (то есть вместе с тегом <h1>).

Как это исправить?

DI
На сайте с 03.01.2007
Offline
123
#14

$str = str_replace('<title></title>', '<title>' . $title[0] . '</title>', $str);

заменить на

$str = str_replace('<title></title>', '<title>' . strip_tags($title[0]) . '</title>', $str);

crk
На сайте с 23.05.2007
Offline
58
crk
#15
DenIT:
$str = str_replace('<title></title>', '<title>' . $title[0] . '</title>', $str);
заменить на
$str = str_replace('<title></title>', '<title>' . strip_tags($title[0]) . '</title>', $str);

Спасибо всем. Задача решена. :)

Skom
На сайте с 02.12.2006
Offline
165
#16
DenIT:
$str = str_replace('<title></title>', '<title>' . $title[0] . '</title>', $str);
заменить на
$str = str_replace('<title></title>', '<title>' . strip_tags($title[0]) . '</title>', $str);

А ещё проще так

$str = str_replace('<title></title>', '<title>' . $title[1] . '</title>', $str);
:)

А если файлов мильён, а переписывать все в лом, то путём небольшой дополнительной нагрузки на сервак можно добавить в конец http://www.site.ru/head.php сие


$f_Path=$_SERVER['DOCUMENT_ROOT'].$_SERVER[REQUEST_URI];
$s_file=fopen($f_Path,"r");
$f_content = fread ($s_file, filesize ($f_Path));
preg_match("|<h1>(.*)</h1>|imsU", $f_content, $f_title);
echo("<title>$f_title[1]</title>\n");
Cras amet qui numquam amavit quique amavit cras amet
crk
На сайте с 23.05.2007
Offline
58
crk
#17
Skom:

А если файлов мильён, а переписывать все в лом, то путём небольшой дополнительной нагрузки на сервак можно добавить в конец http://www.site.ru/head.php сие

$f_Path=$_SERVER['DOCUMENT_ROOT'].$_SERVER[REQUEST_URI];
$s_file=fopen($f_Path,"r");
$f_content = fread ($s_file, filesize ($f_Path));
preg_match("|<h1>(.*)</h1>|imsU", $f_content, $f_title);
echo("<title>$f_title[1]</title>\n");

У меня на месте этого кода сервер выдает <title>(.*)</title>

Skom
На сайте с 02.12.2006
Offline
165
#18

Тогда надо смотреть пациента руками.

Ибо на "подопытном кролике" всё работает.

12

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