[Sulucionado] string.match no funciona

Iniciado por Sancho.Mazorka, 21 Febrero 2011, 10:06 AM

0 Miembros y 1 Visitante están viendo este tema.

Sancho.Mazorka

Hola, qué tal?

Mi problema es el siguiente. Tengo una aplicación en php que descompone unas estadisticas con expresiones regulares.

Código (php) [Seleccionar]
preg_match_all('#([0-9]{1,5}) ([0-9]{1,5}) (.*)#', $string, $hits);

$string contiene estos datos: 1100 51 "|-WDFH-| ^9Gonz"

En php funciona perfecto y el resultado es este.

$hits[3][0] = 1100
$hits[2][0] = 51
$hits[1][0] = "|-WDFH-| ^9Gonz"


Al pasarlo a javascript me quedó así:

Código (javascript) [Seleccionar]
var txt = '1100 51 "|-WDFH-| ^9Gonz"';
var matches = txt.match('#([0-9]{1,5}) ([0-9]{1,5}) (.*)#');
for (i in matches){
   alert(i + ' : ' + matches[i]);
}


Pero cuando uso la consola de Google Chrome,  me indica que matches = null.

Alguna solución?


Saludos, Sancho.Mazorka!    :¬¬
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



Nakp

Ojo por ojo, y el mundo acabará ciego.

Sancho.Mazorka

Cambié el pattern
Código (javascript) [Seleccionar]
var matches = txt.match('#([0-9]{1,5}) ([0-9]{1,5}) (.*)#');

por éste otro y funciono de 10, cuando le coloqué las "/ /" no funciono
Código (javascript) [Seleccionar]
var matches = txt.match('([0-9]{1,5}) ([0-9]{1,5}) (.*)');

Lo unico que hice fue remover los #.

Gracias!


Saludos, Sancho.Mazorka!    :¬¬
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Sancho.Mazorka

No hizo falta :S

Código (javascript) [Seleccionar]
var matches = txt.match('([0-9]{1,5}) ([0-9]{1,5}) (.*)');
var matches = txt.match(/([0-9]{1,5}) ([0-9]{1,5}) (.*)/);


Funciona bien, cualquiera de las 2.


Saludos, Sancho.Mazorka!    :¬¬
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



Shell Root

No se, pero creo que es así...
Código (javascript) [Seleccionar]
var matches = txt.match('/([0-9]{1,5})([0-9]{1,5})(.*)/i');
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Sancho.Mazorka

Ya probe, ya lo solucione y por eso le cambie el nombre al thread. Funciona de ambas maneras...por lo menos en javascript, y por qué agregaste una i al final del pattern.


Saludos, Sancho.Mazorka!     :¬¬
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



Shell Root

i   Insensitivo – no distingue mayúsculas de minúsculas
m   Multilinea - ^ y $ indican el inicio y fin de cada linea
s   Todo - el . (punto) captura todo, incluyendo nueva linea
x   Extendido – comentarios & espacios
e   Evaluar (preg_replace) – interpreta el reemplazo como código PHP
S   Análisis extra del patron
U   El patron es insatisfactorio
u   El patron es tratado como UTF-8
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.