2009-07-08 23 views
1

Ich versuche, E-Mails von einer meiner eigenen Websites mit einem regulären Ausdruck abzugleichen. Mit preg_match_all($pattern,$site,$array) sind die Ergebnisse, die ich erhalte, doppelt vorhanden. So zum Beispiel mit:Verwenden von regulären Ausdrücken

$pattern = '/[\w-][email protected]([\w-]+\.)+[\w-]+/i'; 

ich:

Array 
(
    [0] => [email protected] 
    [1] => [email protected] 
    [2] => [email protected] 
    [3] => [email protected] 
    [4] => [email protected] 
    [5] => [email protected] 
    [6] => [email protected] 
    [7] => [email protected] 
    [8] => [email protected] 
    [9] => [email protected] 
) 

Also, warum bekomme ich Duplikate? Ist das ein Problem mit meiner Regex?

Die Zeichenfolge, die ich suche, ist eine URL, die die Methode file_get_contents() verwendet. Ich habe die Zeichenfolge überprüft, um sicherzustellen, dass sie die Seite nicht zweimal zieht.

+2

Was ist die Zeichenfolge, die Sie suchen? – balpha

+0

Wie oben würde Schnur helfen –

Antwort

6

Wenn Sie mit HTML übereinstimmen, stimmen Sie wahrscheinlich sowohl die href im a-Tag als auch den Inhalt des a-Tags ab.

<a href="mailto:[email protected]">[email protected]</a> 
+0

OMG haha ​​du hast wahrscheinlich recht! – Graham

+1

versuchen Sie es mit /mailto:([\w-][email protected]([\w-]+\.)+[\w-]+)/gi, um nur den mailto-Wert – Josh

2

Wenn Sie mit einer kleinen genug Datenmenge zu tun haben, können Sie das Array in array_unique() nur werfen, die werden Sie ein Array zurück geben mit den Duplikaten entfernt.

+0

zu bekommen. Natürlich ist es wahrscheinlich besser zu verstehen, was los ist falsch, aber ich dachte, ich würde es da rausschmeißen :) –

Verwandte Themen