[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Заменить содержимое тега title
Страницы: 1, 2
Гость_Евгений
Здравствуйте!

Я использую регулярку:
preg_match('|<title.*?>(.*)</title>|sei', $html_code)


Нужно найти и заменить содержимое этого тега, например, переменной $new_title
Как это сделать?
Arh
$html = '<title>Мой сайт</title>';
$var = 'Твой сайт';

preg_match('!<title>(.*?)</title>!i',$html, $title);
$html = str_replace($title['1'],$var,$html);
echo $html;


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Guest
Да, но если содержимое title изначально не известно?
Значит можно просто получить значение этого title, а потом произвести замену, как вы привели в примере?
Arh
исправил

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Guest
А что сделать, если между title пусто?
Выводится ошибка.
Можно как-то вставить свой текст вместо этой пустоты?
arlamar
$html = '<title></title>';
$var = 'Твой сайт';
$html = preg_replace('/(?<=<title>)(.*)(?=<\/title>)/iu', $var, $html);
echo $html;


Убрать u если не utf
killer8080
$html = preg_replace('#(<title[^>]*>)(.*)(</title>)#isU', '$1'.$new_title.'$2', $html);
Guest
А если там не пробела, а перенос строки?
Убрал $2 из последнего варианта, так правильно?

$html = '<title>
</title>'
;
$var = 'Твой сайт';
$html = preg_replace('#(<title[^>]*>)(.*)(</title>)#isU', '$1'.$var.'', $html);
echo $html;

Guest
Вроде бы работает как нужно.
Guest
Хотя нет, не работает - title не закрывается!
killer8080
Цитата (Guest @ 12.03.2013 - 20:37)
А если там не пробела, а перенос строки?

вот для этого и нужен модификатор s
Цитата (Guest @ 12.03.2013 - 20:37)
Убрал $2 из последнего варианта, так правильно?

Нет, $2 это захват закрывающего тега title, без него тег останется не закрытым после замены. Если так не нравится подмаска, можешь просто ручками прописать его в замену, просто так запись была короче, и тег сохранялся в исходном виде (регистре)
killer8080
Пардон, ошибочка не $2, а $3
ну или так
$html = preg_replace('#(<title[^>]*>).*(</title>)#isU', '$1'.$new_title.'$2', $html);
Guest
О, killer8080, спасибо!
Теперь всё работает как надо!
Guest
Сейчас заметил, что если написать только цифры, то первый title уничтожается и на выходе получается:
07</title>

А до изменения было так:
<title>Заголовок страницы</title>


Регулярка:
$html = preg_replace('#(<title[^>]*>).*(</title>)#isU', '$1'.$new_title.'$2', $html); 

Guest
Такой баг происходит, если заголовок начинается с числа.
Причём открывающий тег title уничтожается вместе с первым числом!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.