Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Xpath
Forum PHP.pl > Forum > Przedszkole
omi
Witam!

Mam tabele i są tam w kolumnie np. takie wyrazy: slowo , slowo jeden, slowo dwa. Jak mam taki kod:
  1. ('//table//td[contains(text(),"slowo")]/ancestor::tr/td[2]');
to pobierają się wartości z kolumny dla wszystkich tych wyrazów. Czy da się tu pominąć slowo jeden i slowo dwa, żeby kod pobierał tylko wartości dla wyrazu: slowo?
trueblue
Kod
td[text()="slowo"]


http://kawalekkodu.pl/post/the-tag-is-out-...domxpath-s01e01
omi
Próbowałem
  1. td[text()="slowo"]


  1. ('//table//td[text()="slowo"]/ancestor::tr/td[2]');


nie chce zadziałać.
trueblue
To w takim razie nie ma tam tekstu "slowo", ale np. " slowo", "slowo " lub " slowo ".
Sprawdź i wróć na forum.
omi
Jest tam "slowo ".

  1. ('//table//td[text()="slowo "]/ancestor::tr/td[2]');


I nadal nic.
trueblue
  1. $html="<table>
  2. <tbody>
  3. <tr>
  4. <td>&nbsp;</td>
  5. <td>ddd</td>
  6. <td>slowo </td>
  7. </tr>
  8. <tr>
  9. <td>&nbsp;</td>
  10. <td>&nbsp;</td>
  11. <td>&nbsp;</td>
  12. </tr>
  13. <tr>
  14. <td>slowo </td>
  15. <td>abc</td>
  16. <td>&nbsp;</td>
  17. </tr>
  18. </tbody>
  19. </table>";
  20.  
  21. $dom = new DOMDocument;
  22. libxml_use_internal_errors(true);
  23. $dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
  24. libxml_clear_errors();
  25. $dom->encoding = 'UTF-8';
  26.  
  27. $xpath = new DOMXPath($dom);
  28.  
  29. $tds = $xpath->query('//table//td[text()="slowo "]/ancestor::tr/td[2]');
  30. foreach($tds as $td){
  31. echo $td->nodeValue;
  32. }

omi
Twój przykład działa.



Sprawdziłem na Chrome kod strony a tam jest :
slowo & # 160 ;

Jak dam ten kod:

('//table//td[text()="slowo& # 160 ;"]/ancestor::tr/td[2]');

to też nie działa.


& # 160 ; dałem tu spacje bo było razem napisane.
trueblue
Dodaj spację w zapytaniu wpisywaną z klawiatury numerycznej jako ALT + 1 + 6 + 0.
omi
Też nic. A dałem ALT + 0 +1 + 6 + 0.

Tu mam coś na ten temat:

https://translate.googleusercontent.com/tra..._HEK4HxHPoreqjA

i też z tego co widzę nie mogą sobie poradzić.
Pyton_000

Kod
('//table//td[text()="slowo${nbsp}"]/ancestor::tr/td[2]');
trueblue
Cytat(omi @ 21.02.2018, 19:13:51 ) *
Też nic. A dałem ALT + 0 +1 + 6 + 0.

Tak, 0160.
Powinno wyglądać dokładnie tak jak ze spacją, czyli "slowo ". Spacja dodaje się kiedy kończysz wpisywać sekwencję.
omi
Cytat(Pyton_000 @ 21.02.2018, 19:29:06 ) *
Kod
('//table//td[text()="slowo${nbsp}"]/ancestor::tr/td[2]');



A jak zdefiniować zmienną ${space}/${nbsp} tak samo jak $space/$nbsp?
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-2024 Invision Power Services, Inc.