1

文字列のブロックを取り、フォーマットに一致する文字列を見つけることができる正規表現が欲しい:

<a href="mailto:x@x.com">....</a>

そして、この形式に一致するすべての文字列について、. の後に見つかった電子メール アドレスを抽出しますmailto:。何かご意見は?

これは内部アプリに必要であり、スパマーの目的ではありません!

4

5 に答える 5

3

から全体を一致させたい場合:

$r = '`\<a([^>]+)href\=\"mailto\:([^">]+)\"([^>]*)\>(.*?)\<\/a\>`ism';
preg_match_all($r,$html, $matches, PREG_SET_ORDER);

それを速くしたり短くしたりするには:

$r = '`\<a([^>]+)href\=\"mailto\:([^">]+)\"([^>]*)\>`ism';
preg_match_all($r,$html, $matches, PREG_SET_ORDER);

2 番目に一致するグループは、それが何であれ、メールになります。

例:

$html ='<div><a href="mailto:test@live.com">test</a></div>';

$r = '`\<a([^>]+)href\=\"mailto\:([^">]+)\"([^>]*)\>(.*?)\<\/a\>`ism';
preg_match_all($r,$html, $matches, PREG_SET_ORDER);
var_dump($matches);

出力:

array(1) {
  [0]=>
  array(5) {
    [0]=>
    string(39) "test"
    [1]=>
    string(1) " "
    [2]=>
    string(13) "test@live.com"
    [3]=>
    string(0) ""
    [4]=>
    string(4) "test"
  }
}
于 2009-09-04T03:44:55.907 に答える
1

regexp.infoにはさまざまなオプションがあります

一例は次のとおりです。

\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}\b

" mailto:" を前に付けるのは簡単です。

于 2009-09-03T21:54:55.763 に答える
0

内部PHPフィルターhttp://us3.php.net/manual/en/book.filter.phpを使用できます

(電子メールの検証またはサニタイズのために特別に存在するものがあります-> FILTER_VALIDATE_EMAIL)

挨拶

于 2009-09-03T22:12:50.977 に答える
0
/(mailto:)(.+)(\")/

2 番目に一致するグループは、電子メール アドレスになります。

于 2009-09-03T21:55:21.190 に答える