Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: multi-media asdfg en 15 Julio 2011, 15:00 pm



Título: Parsear con PHP Simple HTML DOM
Publicado por: multi-media asdfg en 15 Julio 2011, 15:00 pm
Hola a todos!!

Estoy usando PHP Simple HTML DOM para parsear un XML. El problema que tengo es que estoy parseando un xml que tiene varias etiquetas iguales, <pro>, lo que quiero es empezar a mostrar a partir de la cuarta etiqueta <pro>.

Pongo algo de mi código...

Código:
<?php  
include('simple_html_dom.php');
$html = file_get_html('38024.xml'); 


 foreach($html->find('pro') as $element4)     
echo '<td>' . $element4->outertext  . '%' . '</td>';

       

?>

Alguna Solución ?


Título: Re: Parsear con PHP Simple HTML DOM
Publicado por: ~ Yoya ~ en 15 Julio 2011, 15:55 pm
Prueba asi:
Código
  1. <?php  
  2. include('simple_html_dom.php');
  3. $html = file_get_html('38024.xml');  
  4.  
  5.  
  6. $i = 0;
  7. foreach($html->find('pro') as $element4){  
  8.  
  9. $i+=1;
  10.  
  11. if($i <= 3) { continue; }
  12. echo '<td>' . $element4->outertext  . '%' . '</td>';
  13.  
  14. }
  15.  
  16. ?>

Yo preferiría utilizar el loop for...


Título: Re: Parsear con PHP Simple HTML DOM
Publicado por: multi-media asdfg en 15 Julio 2011, 16:19 pm
Si!! Muchas gracias ~ Yoya ~, funciona perfectamente!


Gracias!
Saludos!!


Título: Re: Parsear con PHP Simple HTML DOM
Publicado por: multi-media asdfg en 15 Julio 2011, 23:22 pm
Hola de nuevo, tengo otra duda sobre el mismo tema...

Con el siguiente código PHP estoy intentando que el valor que recoge a la hora de parsear, muestre una cosa o la otra. El caso es que con texto no me funciona, pero con números si.

Código
  1. <?php
  2.   foreach($html->find('vien') as $element7)   {  
  3.       echo '<td>';
  4.    echo $element7-> outertext ();
  5.  
  6. $element7 = $element7->__toString();
  7. $element7 = intval($element7);
  8.  
  9.  
  10. if ($element7=="S") {
  11.    print '<img src="prueba.gif" title="" alt="" />';
  12. } elseif ($element7=="NE") {
  13.    print "prueba";
  14. }
  15.  
  16. }
  17. echo '</td>';
  18.  
  19. ?>

He probado varias cosas y no ha funcionado entre ellas ... los 3 iguales, el trum y nada...



Título: Re: Parsear con PHP Simple HTML DOM
Publicado por: ~ Yoya ~ en 16 Julio 2011, 01:05 am
La razón porque funciona con numero es porque el valor de $element7 siempre sera un numero. Si mandas texto, el valor de la variable $element7 sera 0.

Código
  1. <?php
  2.   foreach($html->find('vien') as $element7)   {  
  3.       echo '<td>';
  4.    echo $element7-> outertext ();
  5.  
  6. $element7 = $element7->__toString();
  7. $element7 = intval($element7);
  8.  
  9.  
  10. if ($element7=="S") {
  11.    print '<img src="prueba.gif" title="" alt="" />';
  12. } elseif ($element7=="NE") {
  13.    print "prueba";
  14. }
  15.  
  16. }
  17. echo '</td>';
  18.  
  19.  

Lo que puedes hacer es usar dos variables diferentes. La otra forma es quitar intval.

Un ejemplo para que entiendas mejor:
http://codepad.org/xP912tvT

Saludos, ya no podre contestar... Me voy de vacaciones!!!


Título: Re: Parsear con PHP Simple HTML DOM
Publicado por: multi-media asdfg en 16 Julio 2011, 01:20 am
He probado quitando el  intval e incluso a poner las 2 variables diferentes pero en ambos casos lo que hace es que solo aparece la primera opcion del if, que es la imagen, independientemente de si el resultado de la variable es S o NE.

Alguna Solución ??

Que lo pases bien en tus vacaciones ~ Yoya ~  ;)