Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Xpath
omi
post 21.02.2018, 15:34:51
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.11.2017

Ostrzeżenie: (0%)
-----


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?

Ten post edytował omi 21.02.2018, 15:35:36
Go to the top of the page
+Quote Post
trueblue
post 21.02.2018, 15:38:20
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Kod
td[text()="slowo"]


http://kawalekkodu.pl/post/the-tag-is-out-...domxpath-s01e01


--------------------
Go to the top of the page
+Quote Post
omi
post 21.02.2018, 16:35:02
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.11.2017

Ostrzeżenie: (0%)
-----


Próbowałem
  1. td[text()="slowo"]


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


nie chce zadziałać.

Ten post edytował omi 21.02.2018, 16:37:12
Go to the top of the page
+Quote Post
trueblue
post 21.02.2018, 16:46:13
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


To w takim razie nie ma tam tekstu "slowo", ale np. " slowo", "slowo " lub " slowo ".
Sprawdź i wróć na forum.


--------------------
Go to the top of the page
+Quote Post
omi
post 21.02.2018, 17:02:31
Post #5





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.11.2017

Ostrzeżenie: (0%)
-----


Jest tam "slowo ".

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


I nadal nic.

Ten post edytował omi 21.02.2018, 17:10:46
Go to the top of the page
+Quote Post
trueblue
post 21.02.2018, 17:52:03
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  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. }



--------------------
Go to the top of the page
+Quote Post
omi
post 21.02.2018, 18:36:45
Post #7





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.11.2017

Ostrzeżenie: (0%)
-----


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.

Ten post edytował omi 21.02.2018, 18:41:04
Go to the top of the page
+Quote Post
trueblue
post 21.02.2018, 18:59:46
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Dodaj spację w zapytaniu wpisywaną z klawiatury numerycznej jako ALT + 1 + 6 + 0.


--------------------
Go to the top of the page
+Quote Post
omi
post 21.02.2018, 19:13:51
Post #9





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.11.2017

Ostrzeżenie: (0%)
-----


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ć.

Ten post edytował omi 21.02.2018, 19:15:07
Go to the top of the page
+Quote Post
Pyton_000
post 21.02.2018, 19:29:06
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----



Kod
('//table//td[text()="slowo${nbsp}"]/ancestor::tr/td[2]');
Go to the top of the page
+Quote Post
trueblue
post 21.02.2018, 19:35:52
Post #11





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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ę.


--------------------
Go to the top of the page
+Quote Post
omi
post 21.02.2018, 19:44:51
Post #12





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.11.2017

Ostrzeżenie: (0%)
-----


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?

Ten post edytował omi 21.02.2018, 19:46:01
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 04:07