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

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

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

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

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

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

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

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

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

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

«S» в конце ставит регулярное выражение в режиме «одной линии», что означает «. символ соответствует всем символам, включая новые строки. Другие полезные модификаторы