Ir para conteúdo

POWERED BY:

Arquivado

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

Cassiano José

DOMDocument

Recommended Posts

Pessoal, eu estou tentando diminuir os valores de um campo HTML, o valor entre as tags <span>, o HTML está assim:

<li id="inPlayContainer" class="menu-item">
 <div id="isOffered">	  
	<a class="price addBetButton " href="javascript:;">
		<span class="priceText wide  UK">8/11</span>
		<span class="priceText wide  EU">1.727</span>
		<span class="priceText wide  US">-138</span>
		<span class="priceText wide  CH">1.727</span>
		<span class="priceChangeArrow" ></span>
		<input type="hidden" class="betCode" value="0]SK@83788728@319670235@NB*8~11*0*-1*0*0"/>
		<input type="hidden" class="decValue" value="1.727"/>
		<input type="hidden" class="originalBetCode" value="0]SK@83788728@319670235@NB*8~11*0*-1*0*0"/>
	 </a>
   </div></div>
                 </div>
             </div>
                     <div class="market-item ">
                 <div class="outright-label">Empate</div>
                 <div class="outright-odds" title="Vencedor do Encontro">
<div id="s_319670237" class="odds draw">   <div id="isNotOffered" class="hide">	   
	<span class="price priceReadonly"></span>
   </div>
   
   <div id="isOffered">	  
	<a class="price addBetButton " href="javascript:;">
		<span class="priceText wide  UK">27/20</span>
		<span class="priceText wide  EU">2.35</span>
		<span class="priceText wide  US">+135</span>
		<span class="priceText wide  CH">2.35</span>
		<span class="priceChangeArrow" ></span>
		<input type="hidden" class="betCode" value="0]SK@83788728@319670237@NB*27~20*0*-1*0*0"/>
		<input type="hidden" class="decValue" value="2.35"/>
		<input type="hidden" class="originalBetCode" value="0]SK@83788728@319670237@NB*27~20*0*-1*0*0"/>
	 </a>
   </div></div>
</li>

Eu estou obtendo este documento através de um site remoto usando o file_get_contents assim

// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

// Open the file using the HTTP headers set above
// Open the file using the HTTP headers set above
$file = file_get_contents('https://pt.sportingbet.com/services/InPlayApp.mvc/GetInPlaySports?CurrentOddsFormat=');
echo $file;

E Quero fazer um parser nos dados vindo o file_get_contents e diminuir 20% dos valores que estão entre os campos <span>.

Me pediram pra fazer assim:

$doc = new DOMDocument();
$doc->loadHTML($file);
$xpath = new DOMXPath($doc);

//Lista de spans filhos de div"isOffered"->a
//So lista as divs que contenham a class 'pricetext'
$nodeList = $xpath->query("*/div[@id='isOffered']/a/span[contains(concat(' ', @class, ' '), ' priceText ')]");

foreach ($nodeList as $node) {
    if ($node instanceof \DOMElement) {
        // Le o valor do span e transforma num inteiro
        $value = (float) $node->nodeValue;

        // Altera o valor do span
        $node->nodeValue = $value * 0.8;
        var_dump($node->nodeValue);
    }
}

//salva as alterações feitas ao documenthtml
//e guarda na variavel newHtml
$echo = $doc->saveHtml();

Até funciona quando tem apenas 1 div 'IsOffered', mas quando são várias divs como no meu caso, ele não funciona e me retorna um monte de Warning.

Como posso fazer a diminuição e exibi-las nas tags <span> com o valor modificado?

 

Eu estou no começo do meu curso, logo não sei muito bem como fazer isso, queria apenas uma explicação pra aprimorar minha aprendizagem.

Por favor, me ajudem.

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.