Ответ 1
/<a>(.*?)<\/a>/
должен работать.? делает его ленивым, поэтому он хватает как можно меньше, прежде чем сопоставлять часть </a>
. но используя. будет означать, что он соответствует всем, пока не найдет </a>
. Если вы хотите иметь соответствие между строками, вы можете использовать следующее, если preg_match
/<a>(.*?)<\/a>/s
"s" в конце ставит регулярное выражение в режиме "одной строки", что означает ". символ соответствует всем символам, включая новые строки. Смотрите другие полезные модификаторы