Эта тема на forum.dklab.ru


ekzarov: Выделение найденого при поиске
Например есть значение поля "<a href="skidki.ua">skidki.ua</a>"
Я набираю в поле поиска на сайте "skidki.ua".
Нахожу эту запись, беру строку и удаляю из неё все теги. Получаю просто "skidki.ua".
А теперь самое интересное. Надо вместо skidki.ua, написать <b>skidki.ua</b>, ну выделить типа.
Так как заменять надо в оригинальной строке "<a href="skidki.ua">skidki.ua</a>", так и делаю. Но если заменить, то получиться вот что:
"<a href="<b>skidki.ua</b>"><b>skidki.ua</b></a>"
Надеюсь суть проблемы ясна? Замену делаю str_ireplace.

Как вариант, я думал, делать замену вручную, посимвольно. Но перед заменой, смотреть, не находится ли заменяемый символ внутри тега. Если да, то не производить замену.
Сталкивался ли кто-то с такой проблемой? Буду признателен. Спасибо
dimagolov:
ekzarov, то, что заменяется всегда в тегах? этот факт можно отразить в регулярке, и искать и сразу выделять используя preg_replace(), за один проход регулярки
ekzarov:
Спасибо. Видимо это то, что мне нужно. Вы бы не могли подсказать хотя бы примерно паттерн.
iZen:

$src = '<a href="http://abc.xyz">http://abc.xyz</a>';
$result = preg_replace('#<a href="(.*?)">(.*?)</a>#','<b>\\1</b>',$src);

dimagolov:
iZen, не совсем то, вернее совсем не то. это вышла почти что эмуляция str_ireplace для тестового примера.
ekzarov:
Да. В таком варианте не учитывается что в поиске ещё будет много значений, а не только ссылка.
Суть как раз в том, чтобы не трогать никакие теги вообще, а производить замену ТОЛЬКО в тексте между тегами.
ekzarov:
Вот решение. Облазил весь интернет.
http://webmastak.com/article.aspx?id=325

Эта тема на forum.dklab.ru