PHP preg_replace_callback соответствует строке, но исключает URL - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь найти все совпадения внутри блока контента, но игнорировать все, что находится внутри тегов, для использования внутри preg_replace_callback ().

Например:

test
<a href="test.com">test title</a>
test

В этом случае я хочу, чтобы первая строка совпадала, а третья строка совпадала, но НЕ совпадение URL-адреса или совпадения заголовка между тегами a.

У меня есть регулярное выражениеЯ чувствую, что это близко:

#(?!<.*?)(\btest\b)(?![^<>]*?>)#si

(и это не будет соответствовать части URL)

Но как я могу изменить регулярное выражение, чтобы исключить "тест" междуа и / а?

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Я решил сам.Этот шаблон регулярных выражений будет делать то, что я хотел:

#(?!<a[^>]*?>)(\btest\b)(?![^<]*?<\/a>)#si
0 голосов
/ 21 октября 2018

Если это всегда один и тот же шаблон, вы можете использовать [AZ] или комбинацию, например [A-Za-z]

...