Foros del Web » Programando para Internet » PHP »

Obtener nombre y telefono con preg_match_all o similares

Estas en el tema de Obtener nombre y telefono con preg_match_all o similares en el foro de PHP en Foros del Web. Buenas, ya logre extraer de una lista de urls el correo así: Código PHP: $text  =  file_get_contents ( "$UrlArray" ); $res  =  preg_match_all ( "/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i" ...
  #1 (permalink)  
Antiguo 27/01/2013, 15:44
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 9 años, 2 meses
Puntos: 0
Obtener nombre y telefono con preg_match_all o similares

Buenas, ya logre extraer de una lista de urls el correo así:

Código PHP:

$text 
file_get_contents("$UrlArray");
$res preg_match_all("/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i",$text,$matches);
foreach(
array_unique($matches[0]) as $email) {
echo 
$email "<br />";

Esto me saca correctamente los emails de la lista e URls la cual tengo en $UrlArray

ahora lo que quiero hacer es extraer de la misma url el nombre y el correo

estan al lado de donde esta el email:

el teléfono esta compuesto de 8 digitos seguidos tipo 88888888 y en una

etiqueta
Código PHP:
 <span class="text-data">88888888</span
y el nombre esta igual en una etiqueta igual:

Código PHP:
 <span class="text-data">Nombre</span


Como debo sacar el numero y el nombre lo ideal seria sacar

email - nombre - telefono


Muchas Gracias.
  #2 (permalink)  
Antiguo 27/01/2013, 18:00
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 926
Antigüedad: 12 años, 8 meses
Puntos: 269
Respuesta: Obtener nombre y telefono con preg_match_all o similares

Con esto:
Código PHP:
Ver original
  1. preg_match_all('/"text-data">(?P<telefono>[0-9]{8})|(?P<nombre>[^<]*)</',
  2.                '"text-data">89728888</span><span "text-data">aaa<',$info);
Obtienes teléfonos y nombres, pero en un cierto formato.Haz print_r de $info para verlo.
Obtener las 3 cosas como 1 solo match, requeriría ver cómo se relacionan esas 3 cosas (pones el nombre y el teléfono por separado, y del email dices que está "al lado")
  #3 (permalink)  
Antiguo 27/01/2013, 19:32
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Obtener nombre y telefono con preg_match_all o similares

hola dashtrash

este es mi codigo:

Código PHP:
Ver original
  1. $text = file_get_contents("$UrlArray");
  2. $res = preg_match_all("/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i",$text,$matches);
  3. foreach(array_unique($matches[0]) as $email) {
  4. echo $email . "<br />";
  5. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  6. //}
  7. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  8. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  9.  
  10. $info = file_get_contents("$UrlArray");
  11. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  12. preg_match_all('/"text-receipt">(?P<telefono>[0-9]{8})|(?P<nombre>[^<]*)</','"text-receipt"></span><span "text-receipt"><',$info);
  13. print_r ($info);
  14.  
  15. }
  16.  
  17. }
  18.  
  19. esto me imnprime el navegador:
  20.  
  21. correo1@gmail.com
  22. Array ( [0] => Array ( [0] => "text-receipt">< [1] => /span>< [2] => span "text-receipt">< ) [telefono] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) [nombre] => Array ( [0] => "text-receipt"> [1] => /span> [2] => span "text-receipt"> ) [2] => Array ( [0] => "text-receipt"> [1] => /span> [2] => span "text-receipt"> ) )
  23.  
  24.  
  25. correo2@hotmail.com
  26. Array ( [0] => Array ( [0] => "text-receipt">< [1] => /span>< [2] => span "text-receipt">< ) [telefono] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) [nombre] => Array ( [0] => "text-receipt"> [1] => /span> [2] => span "text-receipt"> ) [2] => Array ( [0] => "text-receipt"> [1] => /span> [2] => span "text-receipt"> ) )

me saca bien los correo pero del telefono y nombre nada

Última edición por Mndrake; 27/01/2013 a las 20:00
  #4 (permalink)  
Antiguo 27/01/2013, 20:26
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 926
Antigüedad: 12 años, 8 meses
Puntos: 269
Respuesta: Obtener nombre y telefono con preg_match_all o similares

No interesa el código..Sino una parte del texto que hay en el fichero, para ver el formato real de la cadena donde vas a hacer el preg_match
  #5 (permalink)  
Antiguo 27/01/2013, 20:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Obtener nombre y telefono con preg_match_all o similares

Cita:
Iniciado por dashtrash Ver Mensaje
No interesa el código..Sino una parte del texto que hay en el fichero, para ver el formato real de la cadena donde vas a hacer el preg_match
Claro te paso el codigo exacto que esta en la pagina que quiero extraer los datos:


<div id="user-data" class="box-data">
<div class="column">
<label class="small label-user-data-receipt">Nombre</label>
<span class="text-receipt">Pedro</span><br />
<label class="small label-user-data-receipt">Correo electrónico</label>
<span class="text-receipt">[email protected]</span><br />
<div class="column">
<label class="small label-user-data-receipt">Telefono</label>
<span class="text-receipt">80808080</span><br />
</div>
</div>


de ahi quiero tomar los datos,

Gracias
  #6 (permalink)  
Antiguo 27/01/2013, 21:09
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 926
Antigüedad: 12 años, 8 meses
Puntos: 269
Respuesta: Obtener nombre y telefono con preg_match_all o similares

Prueba con esta:
/"text-receipt">(?:(?P<telefono>[0-9]{8})|(?P<email>[^@<]*@[^<]*)|(?P<nombre>[^<]*))</
Haz un print_r del resultado.
Antes habías puesto que el formato era del tipo:
Código PHP:
Ver original
  1. <span class="text-data">88888888</span>
Y no era text-data.Era text-receipt.Por eso no funcionaba.
  #7 (permalink)  
Antiguo 27/01/2013, 21:14
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 8 años, 4 meses
Puntos: 793
Respuesta: Obtener nombre y telefono con preg_match_all o similares

Si vas a sacar contenido HTML es mejor usar las clases DOM de PHP:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $doc = new DOMDocument();
  4. $doc->loadHTML($html);
  5. $xpath = new DOMXPath($doc);
  6. $data = $xpath->query('//div[@id="user-data"]//span[@class="text-receipt"]');
  7.  
  8. echo 'Tel: ' . $data->item(2)->nodeValue; //Tel: 80808080
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 27/01/2013, 22:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 78
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Obtener nombre y telefono con preg_match_all o similares

Cita:
Iniciado por dashtrash Ver Mensaje
Prueba con esta:
/"text-receipt">(?:(?P<telefono>[0-9]{8})|(?P<email>[^@<]*@[^<]*)|(?P<nombre>[^<]*))</
Haz un print_r del resultado.
Antes habías puesto que el formato era del tipo:
Código PHP:
Ver original
  1. <span class="text-data">88888888</span>
Y no era text-data.Era text-receipt.Por eso no funcionaba.
Muchas gracias dashtrash me sirvio mucho el codigo me da como resultado:


"text-receipt">Nombre1<
"text-receipt">[email protected]<
"text-receipt">ciudad<
"text-receipt">apellido<
"text-receipt">88888888<
"text-receipt">barrio<

"text-receipt">Nombre2<
"text-receipt">[email protected]<
"text-receipt">ciudad<
"text-receipt">apellido<
"text-receipt">88888888<
"text-receipt">barrio<

Esta sale asi porque ese dato es el único que se lleno en los datos.

"text-receipt"><
"text-receipt">[email protected]<


Ahora bien cual seria la forma correcta de ingresar eso a una base de datos donde tengo los campos

Nombre
email
ciudad
apellido
telefono
barrio

$sql = "INSERT INTO tabla (nombre, email, ciudad, apellido,telefono,barrio)
VALUES (' ', ' ', ' ',' ', ' ', ' ' )";


como le pongo a ese insert los values?

Gracias

Etiquetas: nombre, similares
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 01:58.