Подсветка тегов в тексте, но без учета регистра!

Статус
В этой теме нельзя размещать новые ответы.

virtualbrest

Полезный
Регистрация
6 Май 2007
Сообщения
210
Реакции
18
Я чего-то не понимаю, или чего-то не так делаю?

Ни это:

PHP:
$zagolovok = eregi_replace($t1,"<strong>\\0</strong>",$zagolovok);

Ни это:
PHP:
$zagolovok = preg_replace("/(".$t1.")/si","<strong>\\1</strong>",$zagolovok);

не дает мне замену без учета регистра русских букв. Нужно в $zagolovok поменять все $t1 на <strong>$t1</strong> но при условии что и в $t1 и в $zagolovok неизвестно какой регистр.
 
попробуйте:
PHP:
$zagolovok = preg_replace("/(".$t1.")/is","<strong>$1</strong>",$zagolovok);
 
Нет, тоже не помогает, как я понимаю, проблема в том, что и в строке которую ищем, и в которой ищем, может быть разный регистр.
Попытка перевести строку в нижний ничего не дала, она просто не переводится, строка, средствами strtolower. Видимо локаль не та :) Могут быть еще какие-то варианты?

$zagolovok = str_ireplace($t1, "<strong>$t1</strong>", $zagolovok);

не предлагать, тоже не хочет работать.
 
Нет, тоже не помогает, как я понимаю, проблема в том, что и в строке которую ищем, и в которой ищем, может быть разный регистр.
Попытка перевести строку в нижний ничего не дала, она просто не переводится, строка, средствами strtolower. Видимо локаль не та :) Могут быть еще какие-то варианты?



не предлагать, тоже не хочет работать.
Раз strtolower не меняет регистр русского текста, значит правильно, локаль не та. В примере black.cat рабочий, за исключением строк с символами, являющимися мета символами регулярок. Их надо экранировать:
Код:
$zagolovok = preg_replace('/'.preg_quote($t1,'/').'/is','<strong>$0</strong>',$zagolovok);
 
Понятно, буду думать на счет локали, так как на простейшем задании споткнулся, а рыть надо было не в том месте, оказывается. Ваш пример все так же ничего мне не дает.

Тааак..
Заработало после того, как добавил перед регуляркой:

setlocale(LC_ALL, 'ru_RU.CP1251');

И дальше нормально выводит русские буквы. Всем спасибо, заработало!
 
Раз strtolower не меняет регистр русского текста, значит правильно, локаль не та. В примере black.cat рабочий, за исключением строк с символами, являющимися мета символами регулярок. Их надо экранировать:
Код:
$zagolovok = preg_replace('/'.preg_quote($t1,'/').'/is','<strong>$0</strong>',$zagolovok);

Так выделяются не только отдельные слова, но и части слова. Как сделать, чтобы тегами <strong> выделялись только отдельные слова (либо с двух сторон пробелы либо справа не пробел а знак препинания)?
 
Construktor
Код:
$zagolovok = preg_replace('/\b'.preg_quote($t1,'/').'\b/is','<strong>$0</strong>',$zagolovok);
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху