Сделайте ваше совпадение нежадным , добавив ?
к квантификаторам +
и *
как:
$str = preg_replace("/\<a.+?href=\"mailto:(.*?)\".+?\<\/a\>/", "$1", $str);
Также вам не нужно экранировать <
и >
, и, поскольку в шаблоне есть /
, лучше использовать другой разделитель, и поскольку вы не выполняете никакой интерполяции переменных внутри шаблона, в этом нет необходимости. чтобы заключить его в "
таким образом, вы можете избежать экранирования "
внутри шаблона:
$str = preg_replace('#<a.+?href="mailto:(.*?)".+?</a>#', "$1", $str);