2012-05-14 56 views
1

我有一個簡單的正則表達式來查找文本中的電子郵件地址,但即使我沒有看到錯誤,它也不起作用。使用preg_match簡單電子郵件地址檢查

$addr=array(); 
$t='Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean fermentum risus id tortor. Morbi leo mi, nonummy eget tristique non, rhoncus non leo. Donec quis nibh at felis congue commodo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos [email protected] Aliquam [email protected] ornare wisi eu metus.'; 
if(preg_match_all('~[A-Z0-9._%-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}~',$t,$addr, PREG_SET_ORDER)){ 
    echo 'found'; 
} 

我自己也嘗試這個版本,我發現,但它沒有工作,要麼:

if(preg_match_all('/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$/',$t,$addr, PREG_SET_ORDER)){ 

回答

1

您匹配都是大寫的電子郵件。你需要做的任何[A-Za-z],或設置不區分大小寫國旗preg_match

+0

對,我忘了「我」修改,但沒有thi你的代碼真的適合你嗎? – user965748

+0

您沒有將a-z添加到最後一部分。 –

+0

<?php $ addr = array(); $ t ='Lorem ipsum dolor sit amet,consectetuer adipiscing elit。 Aenean fermentum risus id tortor。 Morbi leo mi,nonummy eget tristique non,rhoncus non leo。在felis爭論商品時,Donec quis nibh。每個conubia nostra類別,每個inceptos hymenaeos [email protected]。 Aliquam [email protected] ornare wisi eu metus。'; (preg_match_all('〜[a-zA-Z0-9 ._% - ] + @ [a-zA-Z0-9 .-] + \。[a-zA-Z] {2,4}〜' ,$ t,$ addr,PREG_SET_ORDER)){ echo'found'; } ?> – user965748

0

包括小寫字母類:

if(preg_match_all('~[a-zA-Z0-9._%-][email protected][a-zA-Z0-9.-]+\.[A-Z]{2,4}~',$t,$addr, PREG_SET_ORDER)){ 
    echo 'found'; 
} 

...注意A-Z

1

這也將工作的匹配模式和最短:

[0-z.%-][email protected][0-z.-]+\.[A-z]{2,4}

這工作,因爲0-z涵蓋A-Za-z0-9_,還了Az涵蓋AZ和AZ

我發展在紅寶石,你可以看到這'在行動'在http://rubular.com/r/PdbH1BjWMs

+0

這真是一個很棒的工具 – user965748