2012-05-06 18 views
6

tengo esta cadenaphp obtener el número de una cadena

@ [123: peterwateber] ¡Hola 095032sdfsdf! @ [589: zzzz]

quiero conseguir 123 y 589 ¿cómo que el uso de expresiones regulares o algo en PHP?

Nota: peterwateber y zzzz son solo algunos ejemplos. cualquier cadena aleatoria se debe considerar

Respuesta

6

no se olvide de la búsqueda hacia delante para que no coincida con 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

esta es la mejor respuesta gracias amigo! –

+0

Me alegra ayudar :) – AlienWebguy

2

la siguiente expresión regular extraer uno o más caracteres numéricos consecutivas:

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

Hay una función llamada preg_match_all

El primer parámetro acepta una expresión regular - El El siguiente ejemplo muestra 'coincide con al menos un dígito, seguido de cualquier número de dígitos. Esto coincidirá con los números.

El segundo parámetro es la propia cadena, el tema del que desea la extracción

La tercera es una matriz en la que se sientan todos los elementos coincidentes. Así primer elemento será 123, el segundo será 589 y así sucesivamente

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

hey .. Me olvidé de mencionar En mi publicar mi prioridad para obtener el número en la cadena se empareja cuando "@ [123: texto aquí]" se encuentra –

+0

Lamento no haberlo conseguido. ¿Podrías ser un poco más claro? ¿Quieres que se impriman los números? –

+0

"@ [123: peterwateber]" preg_match_all debe estar basado. si la cadena es "hello nikhil @ [123: peterwateber] es el 6 de mayo" la salida debe ser "123" cuando preg_match_all. Por lo tanto, 123 debe ponerse en la cadena que tiene el siguiente valor "@ [number: string]" –

Cuestiones relacionadas