Foros del Web » Programando para Internet » PHP »

Analizador sintáctico - parser

Estas en el tema de Analizador sintáctico - parser en el foro de PHP en Foros del Web. Hola, alguien sabe si existe alguna variante o programa similar a Bison al que le pueda meter una gramática de HTML y pueda realizar acciones ...
  #1 (permalink)  
Antiguo 26/02/2007, 09:11
Avatar de Althor  
Fecha de Ingreso: mayo-2006
Mensajes: 12
Antigüedad: 17 años, 11 meses
Puntos: 0
Analizador sintáctico - parser

Hola, alguien sabe si existe alguna variante o programa similar a Bison al que le pueda meter una gramática de HTML y pueda realizar acciones semánticas que genere código en PHP y no en C?.

La idea, por si alguien tiene alguna idea que no sea las que he puesto antes, es que tengo que leer una página en html y sacar el contenido de algunas etiquetas con determinado valor del atributo 'class'.

Gracias.
  #2 (permalink)  
Antiguo 26/02/2007, 11:21
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Analizador sintáctico - parser

Una forma es analizar caracter por caracter el html e ir capturando datos ... lo cual es complicado (Aqu tengo un Tips que captura email de un texto cualquier utilizando una tecnica similar Capturar Email de un Texto )

Pero lo mejor, es usar expresiones regulares y funciones adecuadas del PHP. Aqui tengo otro Tips que te puede servir muxo Tips Expresiones Regulares

Entonces segun mi segundo Tips, imagina que quieres capturar todos los div noticias de un html, supongamos que neustro html es
Cita:
<div class="noticias>xxx xxx xxx xxx yyy xx yyy xxx</div>
<div class="noticias>5523532 235325 2352523</div>
<div class="noticias>xD xD xD xD 23523523 </div>
Nuestro Codigo PHP seria
Código PHP:
<?
// By http://deerme.org
// Por supuesto tendras que abrir el Archivo HTML local o remoto
// Y guardarlo en un String, la funcion fopen te sirve 

$texto='<div class="noticias>xxx xxx xxx xxx yyy xx yyy xxx</div>
<div class="noticias>5523532 235325 2352523</div>
<div class="noticias>xD xD xD xD 23523523 </div>'
;

$parser='|<div class="noticias>(.*?)</div>|is';

    
if( 
preg_match_all($parser$texto$title) )
{
    
print_r($title);
                 



?>
Lo cual Imprime la estructura de la matriz $title
Código:
Array
(
    [0] => Array
        (
            [0] => <div class="noticias>xxx xxx xxx xxx yyy xx yyy xxx</div>
            [1] => <div class="noticias>5523532 235325 2352523</div>
            [2] => <div class="noticias">xD xD xD xD 23523523 </div>
        )

    [1] => Array
        (
            [0] => xxx xxx xxx xxx yyy xx yyy xxx
            [1] => 5523532 235325 2352523
            [2] => xD xD xD xD 23523523 
        )

)
Fijate que en $title[1][x] estan los datos capturados

Saludos
  #3 (permalink)  
Antiguo 27/02/2007, 09:39
Avatar de Althor  
Fecha de Ingreso: mayo-2006
Mensajes: 12
Antigüedad: 17 años, 11 meses
Puntos: 0
Re: Analizador sintáctico - parser

Muchas gracias, lo he analizado y más o menos ya sé cómo enfocarlo.
  #4 (permalink)  
Antiguo 27/02/2007, 10:15
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 2 meses
Puntos: 5
Re: Analizador sintáctico - parser

Interesante...

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #5 (permalink)  
Antiguo 27/02/2007, 10:41
Avatar de Althor  
Fecha de Ingreso: mayo-2006
Mensajes: 12
Antigüedad: 17 años, 11 meses
Puntos: 0
Re: Analizador sintáctico - parser

Tengo una duda, la barra vertical | indica opción no?

Tienes una | al principio y otra al final en tu expresión regular. ¿Por qué la del principio y por qué después de la del final has puesto 'is' ?.
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 15:36.