2010-03-27 3 views
1

Я хочу, чтобы заменить все "MailTo:." Ссылку в HTML с простыми письмамиReplaceing <A HREF = "электронная почта: только с электронной Aadress

In: text .... <a href="mailto:[email protected]">not needed</a> text 
Out: text .... [email protected] text 

Я сделал это:

$str = preg_replace("/\<a.+href=\"mailto:(.*)\".+\<\/a\>/", "$1", $str); 

Но он терпит неудачу, если есть несколько сообщений электронной почты в строке или HTML внутри «а» тег

In: <a href="mailto:[email protected]">not needed</a><a href="mailto:[email protected]"><font size="3">[email protected]</font></a> 
Out: [email protected]"> 

ответ

3

Сделайте свой матч нежадным путем добавления ? кванторы + и * как:

$str = preg_replace("/\<a.+?href=\"mailto:(.*?)\".+?\<\/a\>/", "$1", $str); 

Также вам не нужно бежать < и > и так как есть некоторые / в структуре его лучше использовать другой разделитель и так как вы не делаете любую переменную интерполяции внутри шаблона, нет необходимости заключать в " таким образом, вы можете избежать побега " внутри шаблона:

$str = preg_replace('#<a.+?href="mailto:(.*?)".+?</a>#', "$1", $str); 
+0

Спасибо, не жадный матч делает работу хорошо & спасибо за информацию об экранировании. – Lauri

 Смежные вопросы

  • Нет связанных вопросов^_^