Foros del Web » Programando para Internet » PHP »

fopen() y expresiones regulares

Estas en el tema de fopen() y expresiones regulares en el foro de PHP en Foros del Web. Hola chicos Tengo que abrir una página y encontrar una serie de cadenas de texto para luego volcar todo a un archivo Excel pero... no ...
  #1 (permalink)  
Antiguo 17/06/2008, 22:25
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
fopen() y expresiones regulares

Hola chicos
Tengo que abrir una página y encontrar una serie de cadenas de texto para luego volcar todo a un archivo Excel pero... no puedo ni empezar.

Código PHP:
<?php
$name
="http://www.gwinnettdailypost.net/GDP-Legals/LegalAds/950.html";
$file_handle fopen($name"r");

while (!
feof($file_handle)) {

$line_of_text fopen($file_handle);
$texto $line_of_text;

//echo $line_of_text;
$cadena $texto;
$patron "/Security Deed given by /";
$encontrado preg_match_all($patron$cadena$coincidenciasPREG_OFFSET_CAPTURE);

if (
$encontrado) {
    print 
"<pre>"print_r($coincidencias); print "</pre>\n";

    print 
"<p>Se han encontrado $encontrado coincidencias.</p>\n";
    foreach (
$coincidencias[0] as $coincide) {
        print 
"<p>Cadena: '$coincide[0]' - Posición: $coincide[1]</p>\n";
    }
} else {
    print 
"<p>No se han encontrado coincidencias.</p>\n";
}

}

fclose($file_handle);


?>
Qué estoy haciendo mal ?
No me devuelve nada, en la página está el texto que busco y me manda que no encuntra coincidencias... además el bucle está mal creo porque veo cientos de 'no hay coincidencias...
Por favor una ayuda, muchas gracias.

Última edición por Suyta; 17/06/2008 a las 22:36
  #2 (permalink)  
Antiguo 17/06/2008, 22:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: fopen() y expresiones regulares

es mas rápido, y directo... usar file_get_contents() de ahí, haces luego normal todo...

Referencia: http://php.net/file_get_contents
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 17/06/2008, 22:48
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: fopen() y expresiones regulares

me parece a mí o es más lento ?
  #4 (permalink)  
Antiguo 17/06/2008, 22:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: fopen() y expresiones regulares

lo que sucede es que con tratamientos fopen() vas leyendo poco a poco, y sobre todo ya que usas un ciclo... y eso, es lento (para mi)

en cambio, file_get_contents() asigna el resultado de una sola ves.... y no tienes que usar ciclos.... inmediatamente de asignarlo a una variable (en la siguiente linea) puedes hacer tu tratamiento regex (expresiones regulares)

aun así, todo depende de el estilo de programación de cada quien... suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 17/06/2008, 23:01
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: fopen() y expresiones regulares

Gracias pateketrueke pero no me pidas 'estilo' a duras penas me doy maña...

Ahora sí corre bien con esto

Código PHP:

$name
="http://www.gwinnettdailypost.net/GDP-Legals/LegalAds/950.html";

$data file_get_contents("http://www.gwinnettdailypost.net/GDP-Legals/LegalAds/950.html");

preg_match('/Security Deed given by /'$data$m);

//preg_match("/<div id=\"precio\">(.*?)<\/div>/", $data, $m);
echo $m[1]; 
pero no devuelve el texto y sé que está ahí...
está bien la sintaxis ?
Mil gracias otra vez.
  #6 (permalink)  
Antiguo 17/06/2008, 23:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: fopen() y expresiones regulares

ahora, el truco esta en analizar el código fuente del documento que estas leyendo...

analiza bien cualquier patrón útil, y atacarlo.... si encuentro algo, te aviso.... suerte!

NOTA: me imagino que solo necesitas el nombre, o que tantos datos... eh?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 17/06/2008, 23:29
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: fopen() y expresiones regulares

Yea, necesito una cuantos datos de cada noticia... nombre, fecha, nombre y dirección del banco, monto, y unas pocas cosas más.
Ya tengo una idea de los patrones:

Name of Party: 'Security Deed given by ' (siempre empieza con esto)
Bank Name: 'as last transferred to' (siempre empieza con esto)
Bank Address: 'with the debtor is: ' (siempre empieza con esto)

y así más o menos el resto pero... no tengo la más p.... puntana idea de cómo hacerlo
  #8 (permalink)  
Antiguo 17/06/2008, 23:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: fopen() y expresiones regulares

ta' bueno...

por lo visto, es un mal HTML, asi que solo vi estos detalles... espero te sirvan

- cada bloque esta dentro de un <P> (esa es una clave)
- solo usan <BR> para delimitar saltos de linea

y puesto a que no hay mas patrones que rodeen tus datos a pillar, esta medio compleja la cosa....

- capturas primero, todos los contenidos de <P></P>
- de estos contenidos, separas todo en lineas... por medio de <BR>
- luego, ahora si... tendrías que hacer tu análisis regex linea por linea, bloque por bloque...

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 17/06/2008, 23:50
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: fopen() y expresiones regulares

Muchísimas gracias
  #10 (permalink)  
Antiguo 18/06/2008, 00:28
Avatar de Tombar  
Fecha de Ingreso: junio-2008
Ubicación: /home/tombar
Mensajes: 198
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: fopen() y expresiones regulares

por lo que veo lo que quieres es parsear una web a csv.

te recomiendo si no tienes mucha experiencia con expresiones regulares y/o el html de estos tipos apesta que pruebes con la extencion xpath para firefox y la classe que hay para php :P

es muy util para parsear webs :D

BlachHaT mismo lo que estas haciendo sin dudas^^
  #11 (permalink)  
Antiguo 18/06/2008, 01:11
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: fopen() y expresiones regulares

Gracias ! entiendo lo que me decís pero tengo que hacerlo de la otra forma, no tengo salida
  #12 (permalink)  
Antiguo 18/06/2008, 01:20
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: fopen() y expresiones regulares

Ayuuuuuuda

Logré esto

Código PHP:
$data="<P><B>NOTICE OF SALE<BR>
UNDER POWER</B><BR>
GEORGIA,<BR>
GWINNETT COUNTY<BR>
Under and by virtue of the Power of Sale contained in a Security Deed given by <B>Cristina Abboud to JPMorgan Chase Bank, NA, </B>dated April 5, 2007, "
;

preg_match_all("/\<B\>(.*?)\<\/B\>/is"$data$mPREG_PATTERN_ORDER);


$m $m[1];

echo 
$m[1]; 
:

Hasta ahí llego pero si quisiera poner que termine con to cómo séría ?

(espacio)to(espacio)

Ahora estoy editando... las expresiones regulares pude sacarlas pero el mayor problema que tengo es el tamaño del archivo... se hace casi imposible manejarlo. Casi nunca puedo terminar el proceso.
Hay alguna solución ?

Última edición por Suyta; 18/06/2008 a las 02:30
  #13 (permalink)  
Antiguo 18/06/2008, 08:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: fopen() y expresiones regulares

lo del tiempo de proceso lo puedes cambiar para que te de mas tiempo... con max_execution_time en tu php.ini, o bien... desde PHP (no recuerdo como)

lo del to es mas simple.... ¿porque no lo agregas manualmente?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 18/06/2008, 09:55
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: fopen() y expresiones regulares

jejee, estoy intentando

Gracias !
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:16.