2016-04-21 19 views
1

Dies ist mein Code:PHP preg_match_all leer zurückkehren

$str = "sdf13631389945fssx6221363138994523213af"; 
preg_match_all("/^1\d{10}$/",$str,$result); 
var_dump($result); 

Ich möchte nicht, das Telefon entsprechen. 13631389945 aber ich möchte diese Telefonnummer nicht zuordnen. in 6221363138994523213, so schreibe ich das, aber es leer zurückkehren, können Sie mir helfen, ein richtiges Muster zu schreiben, vielen Dank!

Antwort

1

Es gibt kein Ergebnis zurück, weil die ganze Zeichenfolge nicht mit dem Ausdruck übereinstimmt. Wenn Sie nur einen Teil der Zeichenfolge übereinstimmen möchten, entfernen Sie die ^ und $.

preg_match_all("/1\d{10}/",$str,$result); 

nicht auf die Telefonnummer in dem zweiten Teil der Zeichenfolge übereinstimmen, werden Sie gehen zu müssen, erklären, was es genau macht ein ungültiges Spiel. Wenn es die umliegenden Zahlen ist dann verwenden:

(?:^|[^\d])(1\d{10})(?:$|[^\d]) 
+0

Aber wenn ich von^$ loswerden, nur schreiben, was Sie sagen, es wird alles zurückgeben the13631389945 sind die Nr. in 6221363138994523213 ist es das, was ich nicht will, ich will nur die erste Nr. übereinstimmen. – killua0083

+0

@ killua0083 Also sag uns, warum es nicht die zweite zurückgeben sollte. Wenn es einfach die Tatsache ist, dass es andere Zahlen um es herum gibt, dann passen nur Dinge zusammen, die keine Zahl auf beiden Seiten haben: '(?:^| [^ \ D]) (1 \ d {10}) (?: $ | [^ \ d]) ' – Chris

+0

Da ich die Telefonnummer notieren möchte, ist die 6221363138994523213 nicht die Telefonnummer, die nicht gezählt werden sollte – killua0083