Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]paginacja - pobieranie najwyższej wartości
Forum PHP.pl > Forum > Przedszkole
femtosekunda
  1. jest paginacja
  2. <code>
  3. <ul class='paginator'>
  4. <li><a>2</a></li>
  5. <li><a>3</a></li>
  6. </ul>
  7. </code>
  8. do pobierania danych ze strony wykorzystuje parser dom simple
  9.  
  10. <code>
  11. $paginators = $html1->find('.paginator',0)->find('li a');
  12.  
  13. foreach ($paginators as $paginator) {
  14.  
  15. $tablica1 = array(
  16. 'paginator' =>(int)$paginator->plaintext,
  17. );
  18.  
  19.  
  20. }</code>
  21.  
  22. dostaje
  23.  
  24. <code>
  25. array(1) {
  26. 'paginator' =>
  27. int(2)
  28. }
  29. array(1) {
  30. 'paginator' =>
  31. int(3)
  32. }
  33. </code>
  34.  
  35. chcę aby wyświetlała się tylko najwyższa wartość czyli 3, nie wiem jak to zrobić
Comandeer
A nie lepiej skorzystać z wbudowanych w PHP modułów do obsługi DOM? Np XPath to fajna i potężna zabawka:
  1. <?php
  2. $html = '<ul class="paginator">
  3. <li><a>2</a></li>
  4. <li><a>3</a></li>
  5. </ul>';
  6.  
  7. $dom = new DOMDocument();
  8. $dom->loadHTML( $html );
  9.  
  10. $xpath = new DOMXPath( $dom );
  11.  
  12. var_dump( $xpath->query( '(*/*[@class="paginator"]/li)[last()]' )[ 0 ]->nodeValue );


Simple DOM Parser to jednak staroć…
femtosekunda
ok to pobrałeś ostatnie li ale co gdy będzie taka sytuacja

<code>
<ul class='parser'>
<li><a><<</a></li>
<li><a>2</a></li>
<li><a>3</a></li>
<li><a>>></a></li>
</ul>
</code>
Comandeer
To odpowiednie wyrażenie w XPath…

W normalnym świecie coś typu:
Kod
(*/*[@class="paginator"]/li/*[matches(text(), '\d+')])[last()]

Ale że PHP udaje, że mamy 2005 i XPath 2.0 nigdy nie powstało, to coś typu:
Kod
(*/*[@class="paginator"]/li/*[string(number(text())) != 'NaN'])[last()]

http://stackoverflow.com/questions/3854345...st-if-is-number

Jak mówiłem, potężna zabawka, ale trochę się trzeba w to wgryźć wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.