2012-05-06 5 views
6

Ich habe diese Saitephp erhalten die Nummer aus einem String

@ [123: peterwateber] hallo dort 095032sdfsdf! @ [589: zzzz]

Ich möchte 123 und 589 wie zu tun bekommen, dass Sie reguläre Ausdrücke oder etwas in PHP?

Hinweis: Peterwateber und Zzzz sind nur Beispiele. jede zufällige Zeichenfolge sollte

Antwort

6

Sie den Look-Ahead nicht vergessen, so dass Sie nicht 095032 passen:

$foo = '@[123:peterwateber] hello there 095032sdfsdf! @[589:zzzz]'; 
preg_match_all("/[0-9]+(?=:)/", $foo, $matches); 
var_dump($matches[0]); // array(2) { [0]=> string(3) "123" [1]=> string(3) "589" } 
+0

das ist die beste antwort dank mate! –

+0

Froh zu helfen :) – AlienWebguy

2

Die folgende Regex wird man extrahieren oder mehr in einer Reihe numerische Zeichen berücksichtigt werden:

preg_match_all('#\d+#', $subject, $results); 
print_r($results); 
1

Es gibt eine Funktion preg_match_all

Den erste Parameter akzeptiert einen regulären Ausdruck genannt - The Das folgende Beispiel zeigt, dass mindestens eine Ziffer gefolgt von einer beliebigen Anzahl von Ziffern übereinstimmen muss. Dies wird Zahlen entsprechen.

Der zweite param ist die Zeichenfolge selbst, das Subjekt, von dem Sie Extraktion

wollen

Der dritte ist ein Array, in dem alle Elemente abgestimmt sitzen. So erstes Element 123 sein wird, die zweiten 589 sein wird und so weiter

preg_match_all("/[0-9]+/", $string, $matches); 
+0

hey .. ich vergaß In meinem zu erwähnen post meine priorität in bekommen die nummer in der string ist abgestimmt, wenn "@ [123: ein wenig text hier]" gefunden wird –

+0

Es tut mir leid, ich habe das nicht bekommen. Könntest du ein bisschen klarer sein? Möchten Sie, dass die Nummern gedruckt werden? –

+0

"@ [123: peterwateber]" preg_match_all sollte basieren. Wenn die Zeichenfolge "Hallo nikhil @ [123: peterwateber] ist 6. Mai" sollte die Ausgabe "123" sein, wenn preg_match_all. Daher sollte 123 in die Zeichenfolge mit folgendem Wert "@ [number: string]" gebracht werden. –