Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Парсинг с ограничениями
 
 автор: diablo_   (26.09.2013 в 18:08)   письмо автору
 
 

Всем привет.
Есть у меня функция, которая парсит слова в тексте, выглядит она вот так:
$search[] = '#\b('.$array['title'].')\b#isU';

Работает она в общем и целом, нормально, кроме одного но... Если в тексте есть например ссылки, а адрес ссылки совпадает с искомым словом, то он его тоже подменит.
Как сделать ограничение? ну например, если по бокам от искомого слова любые символы кроме букв или _- то делать замену, а если нет, то не делать?

  Ответить  
 
 автор: Igorek   (26.09.2013 в 18:39)   письмо автору
 
   для: 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


'?<=' - позитивный просмотр назад
'?=' - позитивный просмотр вперед

  Ответить  
 
 автор: Diablo_   (26.09.2013 в 20:02)   письмо автору
 
   для: Igorek   (26.09.2013 в 18:39)
 

Спасибо. Вроде как работает!)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования