Título: Ayuda con Analizador Lexico en php Publicado por: include (); en 4 Junio 2012, 21:35 pm 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. Código: <?php Muchas Gracias de antemano ________________ Grandeza no es solo saber, Grandeza tambien es ayudar y compartir!!! Título: Re: Ayuda con Analizador Lexico en php Publicado por: engel lex en 4 Junio 2012, 21:42 pm usa strpos para buscar el"<"
http://www.php.net/manual/es/function.strpos.php (http://www.php.net/manual/es/function.strpos.php) algo asi Código ahí inicio tiene el numero de caracter donde está "<" y fin el de ">" Título: Re: Ayuda con Analizador Lexico en php Publicado por: include (); en 4 Junio 2012, 22:04 pm usa strpos para buscar el"<" http://www.php.net/manual/es/function.strpos.php (http://www.php.net/manual/es/function.strpos.php) algo asi Código ahí inicio tiene el numero de caracter donde está "<" y fin el de ">" soy nuevo en php :-( y no se como hacer eso que me dices :o :S disculpa tanta molestia... Título: Re: Ayuda con Analizador Lexico en php Publicado por: engel lex en 4 Junio 2012, 22:17 pm XD es simple XD
Código
ahí $etiqueta contiene a lo que hay entre < y >, y substr aqui su uso http://php.net/manual/es/function.substr.php (http://"substr") Título: Re: Ayuda con Analizador Lexico en php Publicado por: include (); en 4 Junio 2012, 23:32 pm XD es simple XD Código
ahí $etiqueta contiene a lo que hay entre < y >, y substr aqui su uso http://php.net/manual/es/function.substr.php (http://"substr") 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 ¿? :huh: Título: Re: Ayuda con Analizador Lexico en php Publicado por: include (); en 4 Junio 2012, 23:51 pm 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 ¿? :huh: Mira estoy probando con este codigo: Código: <?php 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: Código: <contacto> Gracias por ayudarme ;D Título: Re: Ayuda con Analizador Lexico en php Publicado por: engel lex en 4 Junio 2012, 23:56 pm ups sorry XD la función strpos la puse al revez XD primero el la cadena, luego lo que se va a buscar XD
Código el substr lo que hace es tomar un texto, desde la posición indicada, con un largo indicado (por eso resto las posiciones) Título: Re: Ayuda con Analizador Lexico en php Publicado por: engel lex en 5 Junio 2012, 00:00 am atream_get_line no funciona igual que substr XD
stream_get_line funciona casi igual a fgets, por pequeñas diferencias :P http://www.php.net/manual/es/function.stream-get-line.php (http://www.php.net/manual/es/function.stream-get-line.php) Título: Re: Ayuda con Analizador Lexico en php Publicado por: include (); en 5 Junio 2012, 00:17 am ups sorry XD la función strpos la puse al revez XD primero el la cadena, luego lo que se va a buscar XD Código 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 :P ya corregi el codigo quedo asi: Código: <?php 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: Código: [b]Variables Tipo Expresion [/b] 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.... ;-) :rolleyes: Título: Re: Ayuda con Analizador Lexico en php Publicado por: engel lex en 5 Junio 2012, 01:47 am si no te importan los saltos de linea extras puedes hacer un str_replace
http://www.php.net/manual/es/function.substr-replace.php (http://www.php.net/manual/es/function.substr-replace.php) Código esto va a colocar un salto de linea luego de cada ">" (en caso de dudas \n significa salto de linea) Título: Re: Ayuda con Analizador Lexico en php Publicado por: include (); en 5 Junio 2012, 06:40 am si no te importan los saltos de linea extras puedes hacer un str_replace http://www.php.net/manual/es/function.substr-replace.php (http://www.php.net/manual/es/function.substr-replace.php) Código esto va a colocar un salto de linea luego de cada ">" (en caso de dudas \n significa salto de linea) mira hice ese cambio que me enviaste pero yo en lugar de colocar Código coloque Código: $saltos = str_replace("<","<\n",$letra)."<br>"; y me dio este resultado Se ha Cargado el Archivo Exitosamente < contacto> < nombre>David Herrera< /nombre> < telefono>187895< /telefono> < /contato> tambien en esta parte Código: $inicio = strpos($letra,"<")+1;// le agrego +1 para quitar el primer < le quite el +1 porque me daba este error Warning: strpos() [function.strpos]: Offset not contained in string in C:\xampplite\htdocs\Archivos\parsearxml.php on line 24 y entonces el codigo lo tengo asi pero si te da cuenta en el resultado me agrega las etiquetas con un espacio luego del simbolo < es decir quedan asi < nombre> Código: <?php siempre muy agradecido ;D hermano ;-) Título: Re: Ayuda con Analizador Lexico en php Publicado por: engel lex en 5 Junio 2012, 07:12 am XD creoq ue me di mal a entender XD
te decia solo usar el str_replace XD Código
Título: Re: Ayuda con Analizador Lexico en php Publicado por: include (); en 5 Junio 2012, 07:31 am XD creoq ue me di mal a entender XD te decia solo usar el str_replace XD Código
:P no habia entendido que era para simplificar jajaja, pero siempre me queda un espacio luego del < a que se debe esto? Título: Re: Ayuda con Analizador Lexico en php Publicado por: include (); en 5 Junio 2012, 07:39 am :P no habia entendido que era para simplificar jajaja, pero siempre me queda un espacio luego del < a que se debe esto? ahora tengo otra duda como hago para comparar palabra por palabra con mi tabla que esta en mi base de datos :huh: disculpa tanta molestia... :rolleyes: Título: Re: Ayuda con Analizador Lexico en php Publicado por: [u]nsigned en 5 Junio 2012, 15:18 pm No entiendo para que queres hacer esto, si queres parsear XML te recomiendo que uses SimpleXML (http://www.php.net/manual/es/ref.simplexml.php). Un ejemplo:
Código
Saludos Título: Re: Ayuda con Analizador Lexico en php Publicado por: include (); en 5 Junio 2012, 15:49 pm No entiendo para que queres hacer esto, si queres parsear XML te recomiendo que uses SimpleXML (http://www.php.net/manual/es/ref.simplexml.php). Un ejemplo: Código
Saludos Primeramente muchas gracias por responder, y lo que quiero hacer es agarrar palabra por palabra y compararlas con una tabla que tengo en una base de datos, soy nuevo en php y no se si con SimpleXML (http://www.php.net/manual/es/ref.simplexml.php) puedo hacer esto... :huh: nuevamente gracias.... Título: Re: Ayuda con Analizador Lexico en php Publicado por: [u]nsigned en 5 Junio 2012, 16:07 pm SimpleXML sirve para cargar un archivo XML en un objeto, y acceder a sus miembros como si de un array se tratase.
Por ejemplo en el codigo anterior: Código Lo que hace eso es cargar el archivo ejemplo.xml en la variable $xml (poder usar el nombre que vos quieras...) Luego para mostrar el nombre haces: Código
Te aconsejaria leer un poco mas sobre PHP, buscate algun manual de introduccion, y luego si largate a hacer estas cosas ;) Saludos Título: Re: Ayuda con Analizador Lexico en php Publicado por: include (); en 5 Junio 2012, 16:15 pm SimpleXML sirve para cargar un archivo XML en un objeto, y acceder a sus miembros como si de un array se tratase. Por ejemplo en el codigo anterior: Código Lo que hace eso es cargar el archivo ejemplo.xml en la variable $xml (poder usar el nombre que vos quieras...) Luego para mostrar el nombre haces: Código
gracias por el consejo y una duda mas... el simplexml me funciona aunque yo no sepa que etiquetas tiene el archivo xml??? Te aconsejaria leer un poco mas sobre PHP, buscate algun manual de introduccion, y luego si largate a hacer estas cosas ;) Saludos |