текст preg_match, который не находится внутри или между тегами html [duplicate]

Если вы получаете это сообщение во время сохранения или компиляции сборки, просто закройте все файлы, а затем откройте любой файл для компиляции и сохранения.

Для меня причина в том, что я переименовал файл, и старый файл все еще был открыт.

7
задан yasar 25 October 2011 в 16:33
поделиться

4 ответа

Вы можете использовать для этого утверждение, так как вам просто нужно убедиться, что искомые слова произойдут где-то после > или перед любым <. Последний тест легче выполнить, поскольку прогнозные утверждения могут быть переменной длиной:

/(asf|foo|barr)(?=[^>]*(<|$))/

См. Также http://www.regular-expressions.info/lookaround.html для хорошее объяснение этого синтаксиса утверждения.

20
ответ дан mario 31 August 2018 в 17:20
поделиться

С моей точки зрения, это должно работать:

echo preg_replace("/<(.*)>(.*)<\/(.*)>/i","<$1><span class=\"some-class\">$2</span></$3>",$target);

Но я не знаю, насколько это безопасно. Я просто представляю возможность:)

0
ответ дан bosniamaj 31 August 2018 в 17:20
поделиться

Ясар, воскресив этот вопрос, потому что у него было другое решение, которое не упоминалось.

Вместо того, чтобы просто проверять, что следующий тег-тег является открывающим тегом, это решение пропускает все <full tags>.

Со всеми отказами об использовании регулярного выражения для разбора html здесь regex:

<[^>]*>(*SKIP)(*F)|word1|word2|word3

Вот демон . В коде это выглядит следующим образом:

$target = "word1 <a skip this word2 >word2 again</a> word3";
$regex = "~<[^>]*>(*SKIP)(*F)|word1|word2|word3~";
$repl= '<span class="">\0</span>';
$new=preg_replace($regex,$repl,$target);
echo htmlentities($new);

Здесь онлайн-демонстрация этого кода.

Ссылка

  1. Как сопоставить шаблон, за исключением ситуаций s1, s2, s3
  2. Как совпадение с шаблоном, если ...
6
ответ дан Community 31 August 2018 в 17:20
поделиться

Это может быть то, что вам нужно: http://snipplr.com/view/3618/ В общем, я бы посоветовал это сделать. Лучшая альтернатива заключается в том, чтобы вырезать все теги HTML и вместо этого полагаться на BBcode, например:

[b]bold text[b] [i]italic text[i]

Однако я понимаю, что это может не сработать с тем, что вы пытаетесь сделать.

Другим вариантом может быть очистка HTML, см. http://htmlpurifier.org/

0
ответ дан user 31 August 2018 в 17:20
поделиться
Другие вопросы по тегам:

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