Autor
|
Tema: Ayuda con Analizador Lexico en php (Leído 11,181 veces)
|
include ();
Desconectado
Mensajes: 36
No seas envidioso, comparte lo que sabes... ;)
|
Hola amigos de elhacker.net necesito una ayuda para lograr hacer mi analizador lexico de xml en php, lo que llevo es, cargo la tabla de simbolos a mi base de datos y luego tengo que leer el archivo xml, lo que quiero hacer es, leer linea por linea el xml y que cuando encuentre "<" sume caracter por caracter hasta encontrar ">" y guardalo en una variable e ir a comparar contra mi base de datos, pero no se que funciones usar para hacer lo que tengo pensado y no se asi esta bien o hay una manera mas facil. esto es lo que llevo del archivo donde quiero leer el xml como un txt. <?php echo "Se ha Cargado el Archivo Exitosamente<br><br>"; $tope='>'; $archivo=fopen('archivos/ejemplo.xml','r') or die("Problemas al abrir el archivo"); while(!feof($archivo)) { $letra=fgets($archivo); $saltos=n12br($letra); echo $saltos; $palabra=$palabra+$letra; } fclose($archivo); ?> Muchas Gracias de antemano ________________ Grandeza no es solo saber, Grandeza tambien es ayudar y compartir!!!
|
|
|
En línea
|
Grandeza no es solo saber, Grandeza es ayudar y compartir!!!
|
|
|
engel lex
|
usa strpos para buscar el"<" http://www.php.net/manual/es/function.strpos.phpalgo asi $inicio = strpos("<", $letra); $fin = strpos(">", $letra, $inicio);//para que empiece a buscar en donde consiguió el primer "<"
ahí inicio tiene el numero de caracter donde está "<" y fin el de ">"
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
include ();
Desconectado
Mensajes: 36
No seas envidioso, comparte lo que sabes... ;)
|
soy nuevo en php y no se como hacer eso que me dices :S disculpa tanta molestia...
|
|
« Última modificación: 4 Junio 2012, 22:15 pm por GuateGio »
|
En línea
|
Grandeza no es solo saber, Grandeza es ayudar y compartir!!!
|
|
|
engel lex
|
XD es simple XD <?php echo "Se ha Cargado el Archivo Exitosamente<br><br>"; $tope='>'; $archivo=fopen('archivos/ejemplo.xml','r') or die("Problemas al abrir el archivo"); { $letra=fgets($archivo);// aquí se supone que está guardada una etiqueta $inicio = strpos("<", $letra); $fin = strpos(">", $letra, $inicio); $etiqueta = substr($letra, $inicio, $fin-$inicio); $saltos=n12br($letra); echo $saltos; $palabra=$palabra+$letra; } ?>
ahí $etiqueta contiene a lo que hay entre < y >, y substr aqui su uso http://php.net/manual/es/function.substr.php
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
include ();
Desconectado
Mensajes: 36
No seas envidioso, comparte lo que sabes... ;)
|
XD es simple XD <?php echo "Se ha Cargado el Archivo Exitosamente<br><br>"; $tope='>'; $archivo=fopen('archivos/ejemplo.xml','r') or die("Problemas al abrir el archivo"); { $letra=fgets($archivo);// aquí se supone que está guardada una etiqueta $inicio = strpos("<", $letra); $fin = strpos(">", $letra, $inicio); $etiqueta = substr($letra, $inicio, $fin-$inicio); $saltos=n12br($letra); echo $saltos; $palabra=$palabra+$letra; } ?>
ahí $etiqueta contiene a lo que hay entre < y >, y substr aqui su uso http://php.net/manual/es/function.substr.phpNo me muestra las etiquetas, y mire las funcion substr pero no se si esa solo funciones metiendo de una vez las posiciones y lo que quiero es que lea char, es decir cuando encuentre < empiece a "concatenar" las letras hasta que encuentre >, pero como ¿?
|
|
|
En línea
|
Grandeza no es solo saber, Grandeza es ayudar y compartir!!!
|
|
|
include ();
Desconectado
Mensajes: 36
No seas envidioso, comparte lo que sabes... ;)
|
No me muestra las etiquetas, y mire las funcion substr pero no se si esa solo funciones metiendo de una vez las posiciones y lo que quiero es que lea char, es decir cuando encuentre < empiece a "concatenar" las letras hasta que encuentre >, pero como ¿? Mira estoy probando con este codigo: <?php echo "Se ha Cargado el Archivo Exitosamente<br><br>"; $archivo=fopen('archivos/ejemplo.xml','r') or die("Problemas al abrir el archivo"); while(!feof($archivo)) { $letra=fgets($archivo); $inicio="<"; $fin=">"; $etiqueta=stream_get_line($letra, $inicio, $fin); $saltos=nl2br($letra); echo $saltos; echo $etiqueta; } fclose($archivo); ?> pero me da este error: Warning: stream_get_line() expects parameter 1 to be resource, string given in C:\xampplite\htdocs\Archivos\parsearxml.php on line 25 Warning: stream_get_line() expects parameter 1 to be resource, string given in C:\xampplite\htdocs\Archivos\parsearxml.php on line 25 David Herrera Warning: stream_get_line() expects parameter 1 to be resource, string given in C:\xampplite\htdocs\Archivos\parsearxml.php on line 25 452368 Warning: stream_get_line() expects parameter 1 to be resource, string given in C:\xampplite\htdocs\Archivos\parsearxml.php on line 25 el xml de ejemplo que estoy usando es este: <contacto> <nombre>David Herrera</nombre> <telefono>452368</telefono> </contato>
Gracias por ayudarme
|
|
|
En línea
|
Grandeza no es solo saber, Grandeza es ayudar y compartir!!!
|
|
|
engel lex
|
ups sorry XD la función strpos la puse al revez XD primero el la cadena, luego lo que se va a buscar XD $inicio = strpos($letra, "<")+1;// le agrego +1 para quitar el primer < $fin = strpos($letra,">", $inicio); $etiqueta = substr($letra, $inicio, $fin-$inicio);
el substr lo que hace es tomar un texto, desde la posición indicada, con un largo indicado (por eso resto las posiciones)
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
engel lex
|
atream_get_line no funciona igual que substr XD stream_get_line funciona casi igual a fgets, por pequeñas diferencias http://www.php.net/manual/es/function.stream-get-line.php
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
include ();
Desconectado
Mensajes: 36
No seas envidioso, comparte lo que sabes... ;)
|
ups sorry XD la función strpos la puse al revez XD primero el la cadena, luego lo que se va a buscar XD $inicio = strpos($letra, "<")+1;// le agrego +1 para quitar el primer < $fin = strpos($letra,">", $inicio); $etiqueta = substr($letra, $inicio, $fin-$inicio);
el substr lo que hace es tomar un texto, desde la posición indicada, con un largo indicado (por eso resto las posiciones) Si estaba al reves la funcion ya corregi el codigo quedo asi: <?php echo "Se ha Cargado el Archivo Exitosamente<br><br>"; $archivo=fopen('archivos/ejemplo.xml','r') or die("Problemas al abrir el archivo"); while(!feof($archivo)) { $letra=fgets($archivo);// aquí se supone que está guardada una etiqueta $inicio = strpos($letra, "<")+1;// le agrego +1 para quitar el primer < $fin = strpos($letra,">", $inicio); $etiqueta = substr($letra, $inicio, $fin-$inicio); $saltos=n12br($letra); echo $saltos; echo $etiqueta; } fclose($archivo); ?> y me muestra asi: contactoDavid Herrera nombre452368 telefono/contato como hacer para que me muestre asi: <contacto> <nombre> David Herrera </nombre> <telefono> 452368 </telefono> </contato> porque despues de eso agarrare cada una de las plabras y las ire a comparar con la tabla de simbolos: mi tabla de simbolos es esta: [b]Variables Tipo Expresion [/b] <contacto> PR <nombre> PR </nombre> PR nombre ID /^[A-Z][a-z]*s[A-Z][a-z]*$/ <telefono> PR </telefono> PR telefono ID /^(2|3)[0-9]{7}$/ </contacto> PR
como ves en mi tabla de simbolos si comparo la etiqueta nombre sin los < > me mostrara error o lo tomara como un ID Muchas gracias por tomarte el tiempo de ayudarme....
|
|
|
En línea
|
Grandeza no es solo saber, Grandeza es ayudar y compartir!!!
|
|
|
engel lex
|
si no te importan los saltos de linea extras puedes hacer un str_replace http://www.php.net/manual/es/function.substr-replace.php
esto va a colocar un salto de linea luego de cada ">" (en caso de dudas \n significa salto de linea)
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Ayuda-C] Programación de un analizador léxico-sintáctico
Programación C/C++
|
Miky Gonzalez
|
2
|
6,676
|
6 Agosto 2013, 23:16 pm
por Alien-Z
|
|
|
Analizador lexico/sintactico
Scripting
|
roadd
|
4
|
3,756
|
5 Mayo 2015, 22:00 pm
por roadd
|
|
|
ayuda , analizador de paquetes de red i seguridad
Hacking Wireless
|
algoritmoXY
|
1
|
2,137
|
12 Agosto 2015, 15:48 pm
por engel lex
|
|
|
Analisador Lexico
Programación C/C++
|
AGuevara
|
3
|
2,055
|
25 Marzo 2019, 15:47 pm
por simorg
|
|
|
analizador lexico / sintactico python
Programación General
|
javidarks
|
7
|
15,537
|
1 Agosto 2021, 10:12 am
por fzp
|
|