PHP preg_replace_callback соответствует строке, но исключает URL
Я пытаюсь найти все совпадения внутри блока контента, но игнорировать все, что находится внутри тегов, для использования внутри preg_replace_callback().
Например:
test
<a href="test.com">test title</a>
test
В этом случае я хочу, чтобы первая строка соответствовала, а третья строка соответствовала, но НЕ совпадало с URL-адресом и заголовком между тегами a.
У меня есть регулярное выражение, которое я чувствую, как близко:
#(?!<.*?)(\btest\b)(?![^<>]*?>)#si
(и это не будет соответствовать части URL)
Но как мне изменить регулярное выражение, чтобы исключить "тест" между а и / а?
2 ответа
Я решил сам. Этот шаблон регулярных выражений будет делать то, что я хотел:
#(?!<a[^>]*?>)(\btest\b)(?![^<]*?<\/a>)#si
Если это всегда один и тот же шаблон, вы можете использовать [AZ] или комбинацию, например [A-Za-z]