2015-09-25 65 views
-1

我如何從html中捕獲所有mailaddresses,但忽略表單值的地址。例如:包含mailaddresses但不值的正則表達式=

<p>Mail: [email protected]</p> 
    ... 
    <input value="[email protected]"> 
    ... 
    <a href="mailto:[email protected]">Kontakt: <span>[email protected]</span></a> 

我需要的所有地址,而不是從輸入字段(它是一種形式的值)的地址。

要匹配的地址,我有:

(mailto:|)[a-z0-9_\.\-\+][email protected][a-z0-9\-\.]+\.[a-z]{2,}+) 
+2

您需要先用DOMDocument解析HTML以排除'value'屬性。 –

回答

0

使用正則表達式來解析HTML這不是一個好主意。不過,更簡單的方法是去除所有輸入值的電子郵件,然後匹配所有提醒電子郵件。

下面是使用您的正則表達式匹配電子郵件的示例。

$html = preg_replace("/value=[\"'][a-z0-9_\.\-\+][email protected][a-z0-9\-\.]+\.[a-z]{2,}[\"']/", "", $html); 

preg_match_all("/[a-z0-9_\.\-\+][email protected][a-z0-9\-\.]+\.[a-z]{2,}/", $html, $matches); 
var_dump($matches); //will output all emails but the one inside value.