2017-01-08 5 views
0

Ich versuche, Telefonnummern aus Zeichenfolge im deutschen Format zu bekommen. Aber ich bekomme es nicht zum vollen Lauf. Der Eingabetext ist eine vollständige HTML-Seite mit vielen Inhalten, nicht nur die Zahlen.Regexp für deutsche Telefonnummer Format

Mögliche Formate:

(06442) 3933023  
(02852) 5996-0  
(042) 1818 87 9919 
06442/3893023 
06442/38 93 02 3  
06442/3839023 
042/ 88 17 890 0  
+49 221 549144 – 79 
+49 221 - 542194 79 
+49 (221) - 542944 79 
0 52 22 - 9 50 93 10 
+49(0)121-79536 - 77 
+49(0)2221-39938-113 
+49 (0) 1739 906-44 
+49 (173) 1799 806-44 
0173173990644 
0214154914479 
02141 54 91 44 79 
01517953677 
+491517953677 
015777953677 
02162 - 54 91 44 79 
(02162) 54 91 44 79 

ich versucht habe:

$regex = '~(?:\+?49|0)(?:\s*\d{3}){2}\s*\d{4,10}~'; 
if(preg_match_all($regex, $input_imprint , $matches)){ 
    print_r($matches); 
} 

Aber es ist nicht nur ein paar Formate entsprechen. Ich habe keine Ahnung, es zu tun :-(

+0

Alle aufgelisteten Formate sind gültig Gibt es Java auf die Frage – chris85

Antwort

1
[0-9]*\/*(\+49)*[ ]*(\([0-9]+\))*([ ]*(-|–)*[ ]*[0-9]+)* 

prüfen Sie diesen Link:.? https://regex101.com/r/CAVex8/1

einige Fehlalarme einführen

+0

By? mir geht es nicht, ich habe es in meinem obigen Beispiel in die Art aufgenommen. Ich bekomme das zurück: Array ([0] => Array ([0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => [16] => [17] => 08335 [18] => [19] =>/99 99 99 ........ Aber ich muss es bekommen zurück 08335/99 99 99 oder 08335999999 oder etwas in der Art. – Mann87

+0

Der Quelltext sieht beispielsweise so aus: Das ist ein großer Test 08331/99 99 99 ist die Nummer – Mann87

+0

Der Quelltext kann sogar so etwas wie '02141 54 91 44 79 und 0 52 22 - 9 50 93 10 sein sind Kontaktnummern, die möglicherweise nicht vollständig übereinstimmen, wenn Regex als zwei separate Telefonnummern verwendet wird. Anstatt HTML als Ganzes zu überprüfen, können Sie es auf einzelne Tags aufteilen und dann nach Nummern suchen. Sie können auch überprüfen, ob die Gesamtlänge der übereinstimmenden Segmente größer oder gleich der Länge einer deutschen Standardtelefonnummer ist. Das gegebene Problem hat zu viele Randfälle, die nacheinander durch Versuch und Irrtum gelöst werden können. Auch Sie könnten [dies] (http://www.phpliveregex.com) nützlich finden. –