|
|
|
| Всем привет.
Есть у меня функция, которая парсит слова в тексте, выглядит она вот так:
$search[] = '#\b('.$array['title'].')\b#isU';
|
Работает она в общем и целом, нормально, кроме одного но... Если в тексте есть например ссылки, а адрес ссылки совпадает с искомым словом, то он его тоже подменит.
Как сделать ограничение? ну например, если по бокам от искомого слова любые символы кроме букв или _- то делать замену, а если нет, то не делать? | |
|
|
|
|
|
|
|
для: diablo_
(26.09.2013 в 18:08)
| | >Как сделать ограничение? ну например, если по бокам от искомого слова любые символы кроме букв или _- то делать замену, а если нет, то не делать?
Попробую предположить:
<?php
$s = 'text _text_ 1text1 text texta text';
echo preg_replace('#(?:(?<=[^a-z_])|^)text(?:(?=[^a-z_])|$)#i','replace', $s);
|
результат:
replace _text_ 1replace1 replace texta replace
|
'?<=' - позитивный просмотр назад
'?=' - позитивный просмотр вперед | |
|
|
|
|
|
|
|
для: Igorek
(26.09.2013 в 18:39)
| | Спасибо. Вроде как работает!) | |
|
|
|