1

正規表現の 1 つに問題がありました。あなたが私を助けることができれば:

<?php 
$ptn = "/[\S]*[A-Za-z0-9_-]*.*[A-Za-z0-9_-]+@[A-Za-z0-9_-]*.*[A-Za-z0-9_-]*[\S]*/";
$str = "Contact name: Wahyu van Schneppanginen Email: perm@perotozair.com ";
preg_match($ptn, $str, $matches);
print_r($matches);
?>

ただし、結果は次のとおりです。

   Array
   (
       [0] =>                           Email:                    perm@perotozair.com  
   )

でも私はしたい :

   Array
   (
       [0] => perm@perotozair.com  
   )

あなたの誰かが私を助けることができれば、私はうれしいです

ありがとう !

4

3 に答える 3

1

これはうまくいきます:

<?php 
$ptn = '/[\w\d-]+(?:\.[\w\d-]+)*@[\w\d-]+(?:\.[\w\d-]+)+/';
$str = "Contact name: Wahyu van Schneppanginen Email: perm@perotozair.com bla bla bla xxx@yyy.com";
preg_match_all($ptn, $str, $matches);
print_r($matches);
?>

あなたの問題は、使用していた単語の境界でした: [\S]*. 代わりにそのために使用する必要があり\bます。また、いくつかの部分をグループ化することで、電子メール アドレスを正しく一致させるために正規表現を簡素化および改善しました。preg_match_all()を使用して、文字列内のすべての電子メール アドレスに一致させることに注意してください。

出力

Array
(
    [0] => Array
        (
            [0] => perm@perotozair.com
            [1] => xxx@yyy.com
        )

)
于 2012-10-31T11:06:51.757 に答える
1

これを試して :-

 <?php 
    $ptn = "/[A-Za-z0-9_-].[A-Za-z0-9_-]+@[A-Za-z0-9_-]*.*[A-Za-z0-9_-]*/";
    $str = "Contact name: Wahyu van Schneppanginen Email: perm@perotozair.com ";
    preg_match($ptn, $str, $matches);
    print_r($matches);
    ?>
于 2012-10-31T11:13:04.233 に答える
-1

なぜあなたは爆発を使わないのですか?

$str = "Contact name: Wahyu van Schneppanginen Email: perm@perotozair.com ";
$strArr = explode("Email: ",$str);
if(isset($strArr[1]))
    $email = $strArr[1]; //output: perm@perotozair.com
else
    echo "Email not found";
于 2012-10-31T11:07:17.967 に答える