href = "mailtoのは<交換:ただのメールアドレスに
質問
無地のメールとHTML内のリンク:
私はすべての「MAILTO」を交換したいです。
In: text .... <a href="mailto:somebody@example.org">not needed</a> text
Out: text .... somebody@example.org text
私はこれをしませんでした
$str = preg_replace("/\<a.+href=\"mailto:(.*)\".+\<\/a\>/", "$1", $str);
しかし、「」タグ
内の文字列またはHTML内に複数の電子メールがある場合、それが失敗しましたIn: <a href="mailto:hello@somedomain.org">not needed</a><a href="mailto:somebody@example.org"><font size="3">somebody@example.org</font></a>
Out: somebody@example.org">
解決
数量詞の?
と+
に*
を追加することによって、の非欲張りのあなたの試合を行います。
$str = preg_replace("/\<a.+?href=\"mailto:(.*?)\".+?\<\/a\>/", "$1", $str);
また、あなたは<
と>
をエスケープする必要はありません、あなたは、パターン内の任意の変数補間を行っていないので、そこにいくつかの/
は異なる区切り文字を使用するために、その優れたパターンであり、以来、"
のこので囲む必要はありませんあなたは、パターン内"
を逃れる避けることができる方法:
$str = preg_replace('#<a.+?href="mailto:(.*?)".+?</a>#', "$1", $str);
所属していません StackOverflow