Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cassiano José

Como organizar um conteúdo com DOM?

Recommended Posts

Estou com problemas em ordenar o tipo de jogo, o HTML está com a seguinte estrutura:

<li id="sitetal">
<span class="selectionName">Empate</span>
    <span class="price">
        <span class="value">3.20</span>
        <span class="arrow"> </span>
    </span>
     
    <div style="display: none" class="sports">Football </div>
</li>
<li id="sitetal">
<span class="selectionName"> Menos de</span>
    <span class="price">
        <span class="value">3.20</span>
        <span class="arrow"> </span>
    </span>
     
    <div style="display: none" class="sports">Football </div>

<span class="cleanHandicap">(-1.5)</span>    <div style="display: none" class="sports">Football </div>

</li>
<li id="sitetal">
<span class="selectionName">Acerto</span>
    <span class="price">
        <span class="value">1.20</span>
        <span class="arrow"> </span>
    </span>
     
    <div style="display: none" class="sports">Football </div>
</li>
<li id="sitetal">
<span class="selectionName">Handicap</span>
    <span class="price">
        <span class="value">3.20</span>
        <span class="arrow"> </span>
    </span>
     
<div style="display: none" class="sports">Football </div>
<span class="cleanHandicap">(-3)</span>    <div style="display: none" class="sports">Football </div>
    </li>

Eu quero mostrar organizado a span class="selectionName" e span class="cleanHandicap".

Usei então o DOM:

            $DOM =  new DOMDocument();
            $DOM->loadHTML('<meta charset="utf-8">'.$html2);
            $xpath = new DomXpath($DOM);
            $price = $xpath->query('//*[contains(concat(" ", normalize-space(@class), " "), "cleanHandicap")]');
            $price2 = $xpath->query('//*[contains(concat(" ", normalize-space(@class), " "), "selectionName")]');
            $a = array_map(null,iterator_to_array($price),
                                iterator_to_array($price2));

            foreach($a as $av){
                echo $av[1]->nodeValue . " ". $av[0]->nodeValue . "<br />";
            }

Eu espero que a saída seja algo como:

 

Empate

Menos de (1-5)

Acerto

Handicap (-3)

 

 

Mas está saindo assim:

 

Empate (1-5)

Menos de (-3)

Acerto

Handicap

 

 

Ou seja, está organizado de forma errada, obviamente por que está encontrado apenas 2 cleanHandicap para 4 selectionName, mas como eu faria pra organizar ele direitinho? Ou seja, atribuir o valor de cleanHandicap para o selectionName correto, ou seja, que contenha a span cleanHandicap em seu <li>?

Tentei várias coisas mas não dar certo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.