Подтвердить что ты не робот

REGEX: захватывать все до определенного слова

ex: <a><strike>example data in here</strike></a>

Я хочу все внутри тега, до конца

/<a>([^<]*)<\/a>/

Это работает, когда в теге <a> нет дополнительных тегов, но что, если есть?

Я хочу знать, можете ли вы сказать ему, чтобы захватить все до [^</a>] вместо [^<].

Выполнение этого с помощью /<a>(.*)<\/a>/ не работает. Иногда я получаю все в теге <a>, а иногда я получаю тонны строк, включенных в этот вызов.

4b9b3361

Ответ 1

/<a>(.*?)<\/a>/

должен работать.? делает его ленивым, поэтому он хватает как можно меньше, прежде чем сопоставлять часть </a>. но используя. будет означать, что он соответствует всем, пока не найдет </a>. Если вы хотите иметь соответствие между строками, вы можете использовать следующее, если preg_match

/<a>(.*?)<\/a>/s

"s" в конце ставит регулярное выражение в режиме "одной строки", что означает ". символ соответствует всем символам, включая новые строки. Смотрите другие полезные модификаторы