elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 3 [4]
31  Programación / PHP / Re: Ayuda con Analizador Lexico en php 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

Código
  1. $letra = str_replace(">",">\n",$letra);
  2.  

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
  1. $letra = str_replace(">",">\n",$letra);
  2.  


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
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,"<");// le agrego +1 para quitar el primer <
$fin = strpos($letra,">", $inicio);
$etiqueta = substr($letra, $inicio, $fin-$inicio);
$saltos = str_replace("<","<\n",$letra)."<br>";
echo $saltos;
}
fclose($archivo);
?>

siempre muy agradecido  ;D hermano  ;-)
32  Programación / PHP / Re: Ayuda con Analizador Lexico en php 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
  1. $inicio = strpos($letra, "<")+1;// le agrego +1 para quitar el primer <
  2. $fin = strpos($letra,">", $inicio);
  3. $etiqueta = substr($letra, $inicio, $fin-$inicio);
  4.  

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
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:

Código:
[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.... ;-) :rolleyes:
33  Programación / PHP / Re: Ayuda con Analizador Lexico en php 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	
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:

Código:
<contacto>
<nombre>David Herrera</nombre>
<telefono>452368</telefono>
</contato>


Gracias por ayudarme  ;D
34  Programación / PHP / Re: Ayuda con Analizador Lexico en php en: 4 Junio 2012, 23:32 pm
XD es simple XD

Código
  1.  
  2. <?php
  3. echo "Se ha Cargado el Archivo Exitosamente<br><br>";
  4. $tope='>';
  5. $archivo=fopen('archivos/ejemplo.xml','r')
  6. or die("Problemas al abrir el archivo");
  7.  
  8. while(!feof($archivo))
  9. {
  10. $letra=fgets($archivo);// aquí se supone que está guardada una etiqueta
  11.  
  12.        $inicio = strpos("<", $letra);
  13.        $fin = strpos(">", $letra, $inicio);
  14.  
  15.        $etiqueta = substr($letra, $inicio, $fin-$inicio);
  16.  
  17. $saltos=n12br($letra);
  18. echo $saltos;
  19. $palabra=$palabra+$letra;
  20. }
  21. fclose($archivo);
  22. ?>
  23.  
  24.  
  25.  

ahí $etiqueta contiene a lo que hay entre < y >, y substr aqui su uso

http://php.net/manual/es/function.substr.php


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:
35  Programación / PHP / Re: Ayuda con Analizador Lexico en php en: 4 Junio 2012, 22:04 pm
usa strpos para buscar el"<"
http://www.php.net/manual/es/function.strpos.php

algo asi

Código
  1. $inicio = strpos("<", $letra);
  2. $fin = strpos(">", $letra, $inicio);//para que empiece a buscar en donde consiguió el primer "<"
  3.  
  4.  

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...

36  Programación / PHP / Ayuda con Analizador Lexico en php 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
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!!!
Páginas: 1 2 3 [4]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines