2012-05-06 15 views
6

ho questa stringaphp ottenere il numero da una stringa

@ [123: peterwateber] ciao là 095032sdfsdf! @ [589: zzzz]

voglio ottenere 123 e 589 come si fa che l'uso di espressioni regolari o qualcosa in PHP?

Nota: peterwateber e zzzz sono solo esempi. qualsiasi stringa casuale dovrebbe essere considerato

risposta

6

non dimenticare il lookahead in modo da non corrispondono 095032:

$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

questa è la migliore risposta grazie amico! –

+0

Felice di aiutare :) – AlienWebguy

2

La seguente espressione regolare estrarrà uno o più caratteri numerici consecutive:

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

C'è una funzione chiamata preg_match_all

Il primo parametro accetta un'espressione regolare - L' l'esempio seguente mostra la corrispondenza di almeno una cifra seguita da un numero qualsiasi di cifre. Questo corrisponderà ai numeri.

Il secondo parametro è la stringa stessa, il soggetto da cui si desidera estrazione

Il terzo è un array in cui tutti gli elementi corrispondenti saranno sedersi. Quindi primo elemento sarà 123, secondo sarà 589 e così via

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

hey .. Ho dimenticato di dire, a mio posta la mia priorità nell'ottenere che il numero nella stringa sia abbinato quando viene trovato "@ [123: un po 'di testo qui]" –

+0

Mi dispiace di non averlo capito. Potresti essere un po 'più chiaro? Vuoi che i numeri siano stampati? –

+0

"@ [123: peterwateber]" dovrebbe essere basato su preg_match_all. se la stringa è "ciao nikhil @ [123: peterwateber] il sesto di maggio" l'output dovrebbe essere "123" quando preg_match_all. Pertanto, 123 deve essere inserito nella stringa che ha il seguente valore "@ [numero: stringa]" –