![]() |
Обработка строки preg_replace
PHP код:
А должен быть: Результат работы скрипты такой: <a href="ssilka4">Семь</a> и ещё <a href="ssilka1">world</a> World семь Буквы world разные и т.д. <a href="ssilka2">пять и два</a> потом World Пять и два государственный. Семь <a href="ssilka3">государств</a> и Шесть паШесть Т.е. скрипт в тексте оборчивает нужными тегами самые первые вхождения слов (повторения не оборачивает), слова для оборачивания в массиве, также теги. Проблема в том что что-то с регистром, т.е. слово World обернулось, а должно было world с маленькой буквы, так как оно первое вхождение. Подскажите в чем проблема, плиз? |
Цитата:
//$words[$i] = "/(?<![a-z0-9а-я])(".preg_quote($words[$i]).")(?![a-z0-9а-я])/iu"; буковку i надо разместить до слэша. Именно i отвечает за регистронезависимость. Ну, а вообще регулярки мне всё время даются трудно. |
Нет я не прав.
$words[$i] = '/(?<=\s|^)(' . preg_quote($words[$i]) . ')(?=\s|$)/i'; Смотри здесь - http://forum.oszone.net/post-1011765-10.html |
заменил на это вроде пашет:
$words[$i] = "/\b(".preg_quote($words[$i]).")\b/i"; это: Цитата:
$words=array('World','пять и два','государств','СеМь','Два и Восемь','два и восемь'); $open_tags=array('<a href="ssilka1">','<a href="ssilka2">','<a href="ssilka3">','<a href="ssilka4">','<a href="ssilka5">','<a href="ssilka6">'); $close_tags=array('</a>','</a>','</a>','</a>','</a>','</a>'); $text = "Семь и ещё world World семь Буквы world разные и т.д. пять и два потом World Пять и два государственный. Семь государств и Шесть паШесть. Два и Восемь и ещё потом буквы два и восемь"; |
Цитата:
если кодировка системы не соответствует, то флаг i не будет работать, поскольку не найдется другой регистр буквы (у нелатиницы)... т.е. нужно юзать setlocale с нужной кодировкой... |
Цитата:
а вотс setlocale не пойму как её применить, на сайте кодировка wuindows-1251 не пинайте :) я только учусь, подскажите |
PHP код:
|
Цитата:
|
текущую локаль можно проверить
PHP код:
|
локаль проверил она такая KOI8-R/ru_RU
|
лучше установите локаль только для строковых функций... вставьте строку до обработки текста...
PHP код:
|
хм, когда через CMS добавляю текст и словосочетания то они выделяются, а экспоритровал другую базу, и в ней не выделяются слова, что-то с кодировкой?
|
PHP код:
Типа так? PHP код:
|
str_replace быстрее будет, но это требует проверки времени выполнения. Сделайте два варианта, и проверьте время выполнения, выберите тот, где быстрее.
в строке замены экранировать не нужно (кроме кавычек), там не регулярное выражение. |
PHP код:
А вот подскажите пожалуйста, как проверить скорость выполнения? Я не думаю, что это на столько важно. Там текста немного. А вот записывается в одну строчку акуратней) но спасибо, буду знать) |
|
Время: 16:58. |
Время: 16:58.
© OSzone.net 2001-