Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] preg_match solo guarda un valor en array

Estas en el tema de preg_match solo guarda un valor en array en el foro de PHP en Foros del Web. Hola! Estoy intentando guardar en un array todos los resultados de búsqueda en una variable pero no consigo que me guarde mas de uno. El ...
  #1 (permalink)  
Antiguo 13/12/2015, 07:21
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
preg_match solo guarda un valor en array

Hola!
Estoy intentando guardar en un array todos los resultados de búsqueda en una variable pero no consigo que me guarde mas de uno.

El codigo es este:
Código PHP:
<?php
$url
='https://www.google.es/search?num=10&safe=off&q=preg_match+site%3Awww.forosdelweb.com&oq=preg_match+site%3Awww.forosdelweb.com&gs_l=serp.3...3831.6637.0.6919.3.3.0.0.0.0.91.230.3.3.0....0...1.1.64.serp..3.0.0.ICsw24Tz6uk';
$contenido file_get_contents($url);
$buscar='@preg_match@';
preg_match($buscar$contenido$enlaces);

var_export ($enlaces);
echo 
$enlaces[1];


?>
y la salida que me da es esta:
Código:
array ( 0 => 'preg_match', )
Notice: Undefined offset: 1 in /Applications/XAMPP/xamppfiles/htdocs/buscador/index.php on line 8
¿Porque no guarda el resto de resultados de la búsqueda?
__________________
Tecnología y tutoriales
  #2 (permalink)  
Antiguo 13/12/2015, 08:53
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: preg_match solo guarda un valor en array

Lee bien la documentación de preg-match. $enlaces se convierte en un array con los resultados que matchean con la expresión regular. Si tu expresión sólo busca lo que es exactamente a preg-match normal que sólo te salga un resultado.
  #3 (permalink)  
Antiguo 13/12/2015, 11:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: preg_match solo guarda un valor en array

Y precisamente para eso existe preg_match_all() que sirve para efectivamente capturar todas las coincidencias y no sólo una.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 13/12/2015, 11:41
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: preg_match solo guarda un valor en array

Gracias por tu respuesta, pero por más que leo y miro los ejemplos del manual oficial, no lo entiendo...
Si yo por ejemplo, quisiera extraer todos los enlaces de la pagina de búsqueda, debería hacerlo con esta expresión regular no?:

Código PHP:
@www.forosdelweb.comS+.html
Esto no devolvería tantos elementos de array con enlaces que empezaran con www.forosdelweb.com y que terminaran en hmtl???

Saludos
__________________
Tecnología y tutoriales
  #5 (permalink)  
Antiguo 13/12/2015, 11:42
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: preg_match solo guarda un valor en array

Cita:
Iniciado por pateketrueke Ver Mensaje
Y precisamente para eso existe preg_match_all() que sirve para efectivamente capturar todas las coincidencias y no sólo una.
OOOOOkkkkk!!!!

Ahora si!!! Estaba escribiendo mientras me respondias!!!

Voy a intentarlo y os digo!!

Gracias!!!
__________________
Tecnología y tutoriales
  #6 (permalink)  
Antiguo 13/12/2015, 11:44
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: preg_match solo guarda un valor en array

Ahora si!!!!!

Muchas gracias pateketrueke!!!!!

Perfecto!!!
__________________
Tecnología y tutoriales

Etiquetas: valor, variable
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 20:30.