2011-08-11 5 views
0

とタグ:PHP - にpreg_replaceすべてmaitoを:メールアドレスこの質問に似

preg_match to extract mailto on anchor

が、私は変換されますPHPで置き換えるグローバル文字列をやろうとしています:

mailm < ...( "a"タグを含む)

タグなしの "[email protected]"のみ。これは、抽出物ではなく置換物である必要があります。

私はpreg_replaceを使用していますが、非常に多くの人のように、正規表現ではかなり貧弱です。私は本当に後の正規表現ですが、最終的な解決策が明らかである限り、ベストプラクティスを歓迎します。

ありがとうございます!

答えて

1
<?php 

$html = '<a href="mailto:[email protected]">Mailme</a> (including the "a" tags)'; 
$html = preg_replace("~<a .*?href=[\'|\"]mailto:(.*?)[\'|\"].*?>.*?</a>~", "$1", $html); 
echo $html; 

working demo

+0

ありがとうございます - これは難しいことではなく、正規表現のスキルが欠けていることを知っていました – jmadsen

+0

@genesis:(。*?) - >それはどういう意味ですか..... – K6t

+0

@ K6t: href。 genesis

0

次の正規表現は、あなたのための作業を行います。

preg_replace(/<a .*?href=((?:\'|\"))mailto:(.*?)$1[^>]*>[^<]+</a>/i, "$2", $html); 

いくつかは、改行がそう、HTMLで起こることが起こった可能性があるため、[< ^]、*が失敗します。開始タグと終了タグの間[^ <] +使用+する場合(以下、これはまれなケースでは失敗記号より)<がタグの内容に表示されます。大文字小文字の区別のために使用されるフラグ "i"が置き換えられます。

関連する問題