1

次の文字列からメールを抽出する必要があります。

$string = 'other_text_here to=<my.email@domain.fr> other_text_here <my.email@domain.fr> other_text_here';

サーバーからログが送信され、このような形式になっています。「to=<」と「>」を使用せずにメールを変数に入れるにはどうすればよいですか?

更新: 質問を更新しました。メールが文字列内で何度も見つかり、正規表現がうまく機能しないようです。

4

4 に答える 4

1

単純な正規表現でそれができるはずです:

$string = 'other_text_here to=<my.email@domain.fr> other_text_here';
preg_match( "/\<(.*)\>/", $string, $r );
$email = $r[1];

あなたが得るときecho $email、あなたは得る"my.email@domain.fr"

于 2013-10-16T13:48:49.500 に答える
0

これを試して:

<?php
$str = "The day is <tag> beautiful </tag> isn't it? "; 
preg_match("'<tag>(.*?)</tag>'si", $str, $match);
$output = array_pop($match);
echo $output;
?>

出力:

美しい

于 2013-10-16T13:57:12.850 に答える
0

<および>が文字列内の他の場所で使用されていないことが確実な場合、正規表現は簡単です。

if (preg_match_all('/<(.*?)>/', $string, $emails)) {
    array_shift($emails);  // Take the first match (the whole string) off the array
}
// $emails is now an array of emails if any exist in the string

括弧は、$matches配列をキャプチャするように指示します。は.*任意の文字をピックアップし、?貪欲にならないように指示するため、>はそれをピックアップしません。

于 2013-10-16T13:47:51.293 に答える