Foros del Web » Programando para Internet » PHP »

preg_match + $matches, mas de 1

Estas en el tema de preg_match + $matches, mas de 1 en el foro de PHP en Foros del Web. Hola, como puedo hacer, para aqui poner en vez de que me muestre solo 1 contenido de TAL web, que me muestre 2 contenidos... Código ...
  #1 (permalink)  
Antiguo 22/06/2010, 17:27
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
preg_match + $matches, mas de 1

Hola, como puedo hacer, para aqui poner en vez de que me muestre solo 1 contenido de TAL web, que me muestre 2 contenidos...


Código PHP:
<?php
// Inicializar CURL
$ch curl_init();
 
 
// Direccion de la pagina
$pagina 'WEB.com';
 
// Obtener el codigo fuente
curl_setopt($chCURLOPT_URL$pagina);
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
$source_code curl_exec ($ch);
curl_close ($ch);
 
// Regular expressions para obtener el contenido buscado
preg_match("/<title>(.*)<\/title>/"$source_code$matches);
?>

CONTENIDO 1: <input name="textarea2" type="text" style="width:399px; text-align: left;" value="<? echo $matches[1]; ?>" />
  #2 (permalink)  
Antiguo 22/06/2010, 18:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: preg_match + $matches, mas de 1

Usa preg_match_all.

Saludos.
  #3 (permalink)  
Antiguo 23/06/2010, 07:08
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: preg_match + $matches, mas de 1

ok, lo he puesto asi:

Código PHP:
Ver original
  1. preg_match_all("/<title>(.*)<\/title>/", $source_code, $matches);
  2.  
  3. foreach ($matches as $val) {
  4. echo 'Mostrar: '.$val[0].'';
  5. }

Y se me muestras asi:
Mostrar: Mostrar: BLABLABLABLA

se me muestra 2 veces el Mostrar

y otra cosa, como hago para añadir que se me vea tambien lo que este entre <u>ESTO</>
  #4 (permalink)  
Antiguo 23/06/2010, 10:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: preg_match + $matches, mas de 1

Modifica tu expresión regular, y luego usa ifs() para checar sí esta en blanco e imprimirlo.

Saludos.
  #5 (permalink)  
Antiguo 23/06/2010, 11:07
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: preg_match + $matches, mas de 1

y por que lo que pongo entre foreach ejem: echo 'BLABLA';
se repite?

Código PHP:
<?php
// Inicializar CURL
$ch curl_init();
 
 
// Direccion de la pagina
$pagina 'WEB.COM';
 
// Obtener el codigo fuente
curl_setopt($chCURLOPT_URL$pagina);
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
$source_code curl_exec ($ch);
curl_close ($ch);
 
// Regular expressions para obtener el contenido buscado
preg_match_all("/<title>(.*)<\/title>/"$source_code$titulo);

foreach (
$titulo as $mostrar) {
echo 
' Titulo: ';
echo 
"" $mostrar[0] . "\n";
}
?>
  #6 (permalink)  
Antiguo 23/06/2010, 14:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: preg_match + $matches, mas de 1

Haz un var_dump a tu variable y ve que datos esta haciendo match, en el manual te especifica claramente los datos que te devuelve la matriz.

Saludos.
  #7 (permalink)  
Antiguo 24/06/2010, 06:37
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: preg_match + $matches, mas de 1

si le hago 1 var_dump me da esto:

Código var_dump:
Ver original
  1. array(2) { [0]=>  array(1) { [0]=>  string(58) "" } [1]=>  array(1) { [0]=>  string(43) " Toy Story 3 descarga directa - la pelicula" } }
  #8 (permalink)  
Antiguo 24/06/2010, 08:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: preg_match + $matches, mas de 1

Pues ahí esta te esta haciendo dos matches uno en blanco y otro con datos, como te digo si no quieres mostrar los en blanco usa un simple if para filtrar.
  #9 (permalink)  
Antiguo 24/06/2010, 08:41
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: preg_match + $matches, mas de 1

Código PHP:
foreach ($titulo as $mostrar) {
if(
$mostrar[$i]!= ){
echo 
" Titulo:";
echo 
"  "$mostrar[0] ."\n ";


asi?
  #10 (permalink)  
Antiguo 24/06/2010, 08:45
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: preg_match + $matches, mas de 1

bueno, ya lo he probado y sigue saliendo así: http://todoenlaces.org/prueba.php

Titulo: Titulo:

y lo he puesto asi:
Código PHP:
Ver original
  1. foreach ($titulo as $mostrar) {
  2. if($mostrar != ""){
  3. echo " Titulo:";
  4. echo "  ". $mostrar[0] ."\n ";
  5. }
  6. }
  #11 (permalink)  
Antiguo 24/06/2010, 12:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: preg_match + $matches, mas de 1

Te recomiendo leas un manual básico de PHP, ya que si lo que esta en blanco es $mostrar[0] es lo que debes de comparar dentro del if.

Etiquetas: mas
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 06:33.