ilyaplot
@ilyaplot
PHP программист

Как не испортить html тэги при замене текста?

Делаю замену определенных слов в тексте ссылками. Иногда попадаю в img title, alt и другие тэги. Сейчас работает регулярка, которая не срабатывает, если перед и после заменяемого слова стоят <,> или кавычки. Но бывает, что слово является частью ссылки или входит в параметры html тэгов. Как избежать замены, сохраняя существующие тэги?
  • Вопрос задан
  • 2245 просмотров
Решения вопроса 1
OlegLazarenko
@OlegLazarenko
Признаюсь, вашу регулярку так и не осилил.. Почему именно от 1 до 10 символов в начале и конце непонятно?

Набросал вот что, посмотрите..

$pattern = preg_quote("Nokia");
$value = '$1<a style="background-color: red; color: white;" href="http://ya.ru/">$2</a>$3';
$content = file_get_contents('http://hi-tech.mail.ru/review/Nokia_Lumia_630-rev.html', "r");
$exp = "/(<[^aA][^>]*?>[^<\"]*?[^\w])($pattern)([^\w][^>\"]*?<)/i";
$content = preg_replace($exp, $value, $content);
echo $content;


Вроде выполняет то, что нужно. Текст внутри непарных тегов не заменяет. Так же не заменяет внутри тега <а>, хоть он и парный. И не трогает текст внутри кавычек "".

оно?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы