Foros del Web » Programando para Internet » PHP »

recoger dato con expresiones regulares

Estas en el tema de recoger dato con expresiones regulares en el foro de PHP en Foros del Web. Hola buenas, estoy intentando recoger un dato de una cadena, tengo un texto en el cual me aparece este código: <IMG src="../carpeta/primera/ver.jpg" name="452"> Lo que ...
  #1 (permalink)  
Antiguo 26/03/2009, 17:43
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
recoger dato con expresiones regulares

Hola buenas, estoy intentando recoger un dato de una cadena, tengo un texto en el cual me aparece este código:

<IMG src="../carpeta/primera/ver.jpg" name="452">

Lo que necesito es sustituir esa cadena por una función la cual contruye una tabla con la información y pasarle el id que está en la etiqueta name.

$texto = ereg_replace( "<IMG [^>]+>", verdatos('452'), $texto );

Así que con expresiones regulares recorro la cadena de texto y cambio esa etiqueta por esa función, vale, pero como recupero el valor de name y se lo paso a i función?

Alguna idea??
__________________
asp, php, .net, adaptandose a las necesidades
  #2 (permalink)  
Antiguo 26/03/2009, 18:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 1 mes
Puntos: 2534
Respuesta: recoger dato con expresiones regulares

por favor lee lo siguiente, http://www.forosdelweb.com/f18/aport...s-pcre-646110/

en tu expresión regular debes capturar con paréntesis, y luego, asignar un tercer parámetro para capturar estos valores en un arreglo...

Código PHP:
preg_match('/foo="(.*?)"/''<candy el="does" foo="bar"/>'$test);

echo 
$test[1]; // bar 
suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/03/2009, 19:11
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
Respuesta: recoger dato con expresiones regulares

hola muy buenas, bueno he estado mirando un poco el tema, y al final he conseguido lo qu epretendía:

Código HTML:
$url = '<IMG src="../carpeta/primera/ver.jpg" name="452"> texto texto <IMG src="../carpeta/primera/ver.jpg" name="362">';
preg_match('/name="(.*?)"/', $url, $test);
echo $test[1];
$texto = ereg_replace( "<IMG [^>]+>", 'verdatos('.$test[1].')', $url );
echo $texto; // bar

Aunque se me a planteado otra duda, si en el texto tengo 2 img, capturo los names de esta forma:

Código HTML:
preg_match_all('/name="(.*?)"/', $texto, $test);
echo $test[1][0] . ", " . $test[1][1] ;
De esa forma recojo los valores 452, 362, pero como los paso a verdatos('numero')? ya que de la forma anterior:

$texto = ereg_replace( "<IMG [^>]+>", 'verdatos('.$test[1].')', $url );

solo recojo y paso el primer datos, buf, llevo un rato probando cosillas y na de na. alguna idea?

Un saludo
__________________
asp, php, .net, adaptandose a las necesidades
  #4 (permalink)  
Antiguo 27/03/2009, 20:07
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 4 meses
Puntos: 36
Respuesta: recoger dato con expresiones regulares

Hola haven. Prueba así:


echo preg_replace('/name="(.*?)"/', "verdatos('\\1')", '<img name="123" /><p name="zx"></p>');


El \\1 representa el valor que estaría dentro del name

Entrada: <img name="123" /><p name="zx"></p>
Salida: <img verdatos('123') /><p verdatos('zx')></p>
__________________
Spread Firefox | Download Day 2008
¡Únete en nuestra misión para alcanzar el Record Guinness al software más descargado en 24 horas! http://www.spreadfirefox.com/es-ES/worldrecord/
  #5 (permalink)  
Antiguo 27/03/2009, 20:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 1 mes
Puntos: 2534
Respuesta: recoger dato con expresiones regulares

sumado a lo que te comentan...

como verdatos() es una funcion, debe ser evaluada... cierto?

bien, pues solo coloca el modificador e a la expresión ...

revisa el tema, http://www.forosdelweb.com/f18/aport...s-pcre-646110/

Código PHP:
function foo($bar)
{
  return 
"<[[$bar]]>";
}

echo 
preg_replace('/[be]="(.*)"/e''foo("\\1")''<a b="c"/><d e="f"/>'); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 29/03/2009, 08:50
 
Fecha de Ingreso: febrero-2002
Ubicación: Navarra
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 2
Respuesta: recoger dato con expresiones regulares

Gracias hgp147 y gracias pateketrueke vuestras respuestas me han ayudado mucho para resolver el problema que tenía, he intentado varias veces aprender el tema de las expresiones regulares, pero buf se me hacen difíciles, ahora por lo menos ya se interactuar con etiquetas completas y recoger datos dentro de esas etiquetas, que no es poco.

Lo dicho muchas gracias y un saludo.
__________________
asp, php, .net, adaptandose a las necesidades
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:43.