Foros del Web » Programando para Internet » PHP »

Analizador Lexico en php

Estas en el tema de Analizador Lexico en php en el foro de PHP en Foros del Web. hola amigos del Forosdelweb tengo un xml como este <contacto> <nombre>David Herrera</nombre> <telefono>187895</telefono> </contato> alguien me puede ayudar para recorrer el archivo caracter por caracter...es ...
  #1 (permalink)  
Antiguo 05/06/2012, 15:17
 
Fecha de Ingreso: junio-2012
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Analizador Lexico en php

hola amigos del Forosdelweb tengo un xml como este
<contacto>
<nombre>David Herrera</nombre>
<telefono>187895</telefono>
</contato>

alguien me puede ayudar para recorrer el archivo caracter por caracter...es decir empieza a leer y guardar cuando encuentre < y va agregando caracteres a esa variable hasta que encuentre > y la variable donde me guarde las palabras me vaya a compar con una tabla de datos, esto lo estoy haciendo asi porque me van a dar un xml donde yo no conozco las etiquetas del xml sino facil con un simple xml

esto tengo pero no logro hacer:

Código PHP:
<?php    
    
echo "Se ha Cargado el Archivo Exitosamente<br><br>";    
    
$archivo=('archivos/ejemplo.xml');
    
$letra=fopen($archivo'r');
    if(!
$letra)
    {
    echo 
"error al abrir archivo";
    }
    while (
false !== ($char fgetc($letra)))
    {
    echo 
"\n".$char;
    }    
    
fclose($letra);
?>

Gracias por cualquier ayuda!!!
  #2 (permalink)  
Antiguo 05/06/2012, 16:05
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 5 meses
Puntos: 181
Respuesta: Analizador Lexico en php

Y exactamente que es lo que esta pasando?

Cita:
<contacto>
<nombre>David Herrera</nombre>
<telefono>187895</telefono>
</contato>
Supongo que así no tendras tu xml completo, primero porque no tiene cabecera y segundo porque </contato> no puede cerrar a <contacto>

Código PHP:
echo "Se ha Cargado el Archivo Exitosamente<br><br>";     
    
$archivo=('archivos/ejemplo.xml'); 
    
$letra=fopen($archivo'r'); 
Ese echo no esta haciendo nada, el echo funcionaria si se verificara que en verdad si se abrio el archivo. Es decir si letra existe imprima que se ha cargado exitosamente.

Comentanos que error te ocurre, de paso no sobra leer el manual de donde sacaste el ejemplo que pone una advertencia.
__________________
Blog de humor http://elcuasatar.net63.net/
  #3 (permalink)  
Antiguo 05/06/2012, 16:08
 
Fecha de Ingreso: junio-2012
Ubicación: En mi casa (?
Mensajes: 15
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Analizador Lexico en php

Hola! Bueno, este tema está complicado. Primero no entiendo porque en tu codigo lo primero que muestras es:

echo "Se ha Cargado el Archivo Exitosamente<br><br>";

Si todavía no hiciste nada jaja ¿como sabes que se cargó exitosamente? Esos mensajes a veces son mejor evitarlos.

Por otro lado cuando en el While dice:
while (false !== ($char = fgetc($letra)))
No entiendo porque ese FALSE !== y tampoco entiendo que es esa r

Tal vez aclarando esos puntos podamos ayudarte un poco mas =)

Saludos
  #4 (permalink)  
Antiguo 05/06/2012, 16:20
 
Fecha de Ingreso: junio-2012
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Analizador Lexico en php

lo que quiero es agarrar etiqueta por etiqueta e ir a comparar las etiquetas con una base de datos..

ahora estoy probando con esto:

Código PHP:
$letra=fopen($archivo'r');
    if(!
$letra)
    {
    echo 
"error al abrir archivo";
    }
    while (
false !== ($char fgetc($letra)))
    {
    
$cadena=preg_replace('/\n\t\r/',$char);
    if(
$char=='<')
    
$cadena=$char;
    else if(
$char!='>'
    
$cadena=$cadena.$char;
    else
    { 
    
$cadena=$cadena.$char;
    echo 
$cadena;
    echo 
"<br>";
    
$cadena="";
    }
    }    
    
fclose($letra); 

pero me da error
  #5 (permalink)  
Antiguo 05/06/2012, 16:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Analizador Lexico en php

Un analizador léxico no es cosa sencilla, de verdad no es algo que se complemente de la buena voluntad de los usuarios del foro.

Realizarlo implica conocimientos amplios del lenguaje, en este caso php, y además bastante practica y experiencia con la lógica misma.

Finalmente no entiendo a quien se le ocurre crear un analizador de XML cuando existen las librerías para ello en el núcleo de PHP.
http://php.net/simplexml

Sin embargo puedo entender que se trate de un proyecto escolar, y aún así, vamos que hay que estudiar bastante. En estos casos creo que el foro puede tardar mucho mas en brindar orientación que código, nada fácil por cierto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 05/06/2012, 16:31
 
Fecha de Ingreso: junio-2012
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Analizador Lexico en php

Cita:
Iniciado por GuateGio Ver Mensaje
lo que quiero es agarrar etiqueta por etiqueta e ir a comparar las etiquetas con una base de datos..

ahora estoy probando con esto:

Código PHP:
$letra=fopen($archivo'r');
    if(!
$letra)
    {
    echo 
"error al abrir archivo";
    }
    while (
false !== ($char fgetc($letra)))
    {
    
$cadena=preg_replace('/\n\t\r/',$char);
    if(
$char=='<')
    
$cadena=$char;
    else if(
$char!='>'
    
$cadena=$cadena.$char;
    else
    { 
    
$cadena=$cadena.$char;
    echo 
$cadena;
    echo 
"<br>";
    
$cadena="";
    }
    }    
    
fclose($letra); 

pero me da error


Es decir tengo este xml

Cita:
<contacto>
<nombre>David Herrera</nombre>
<telefono>187895</telefono>
</contato>
y quiero venir y agarrar que cuando encuentre < la guarde en una variable y le agrege el siguiente caracter a esa variable y deje de guardar o agregar caracteres hasta que encuentre >



es decir si $char=='<'
entonces viene y $cadena=<.c.o.n.t.a.c.t.o.> de ahi tengo que hacer una consulta hacia la base de datos y comparar si $cadena se encuentra en la base de datos si la encuentra "si existe" sino mostrar "error en la linea tal, Palabra $cadena no encontrada" y de ahi volver a recorrer el xml es decir ya comparamos la etiqueta <contacto>
pasamos a la siguiente
<nombre> y hacer el mismo procedimiento


si me explique..¿¿¿ ???

ah y al error </contato> es a proposito porque lo que quiero es ver si de verdad me esta comparando bien contra la base de datos

Etiquetas: analizador, lexico, tabla, variables
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 02:56.