2015-05-16 2 views
1

Я пытаюсь разобрать конкретный объект, содержащий определенную строку. используя XPathHelper, который я создал под XPath, который отлично работает на сайте, но когда я пытаюсь сделать это программно. он ничего не возвращает?XPath работает в браузере, но не в простом HTML DOM

Что может вызвать этот

include('simple_html_dom.php'); 
$gosu_full = file_get_html("http://www.gosugamers.net/counterstrike/news/30998- cph-wolves-disbands-cs-go-team"); 

echo $gosu_full->find("//em[contains(text(), 'More content on GosuGamers:')]", 0); 

Когда я просто делаю это

echo $gosu_full->find("//em", 0); 

возвращает

<em>More content on GosuGamers:</em> 
+0

Вы проверили, как выглядит '$ gosu_full' после' file_get_html'? – VolenD

+0

yes и if i echo $ gosu_full-> find ("// em", 0) 'он возвращает' Больше контента на GosuGamers: ' –

+0

Я думаю, это может быть проблема с' simple_html_dom.php'. Он хорошо работает со стандартным PHP DOM. – VolenD

ответ

1

Вы можете сделать это с PHP DOM вместо с simple_html_dom.php следующим образом:

$doc = new DOMDocument(); 
// loadHTMLFile generates many warnings, so we want to suppress them 
@$doc->loadHTMLFile("http://www.gosugamers.net/counterstrike/news/30998- cph-wolves-disbands-cs-go-team"); 

$xpath = new DOMXpath($doc); 
$elements = $xpath->query("//em[contains(text(), 'More content on GosuGamers:')]"); 

echo $elements->item(0)->nodeValue; 

Однако, вам не нужно [contains(text(), 'More content on GosuGamers:')] вообще здесь, так что вы можете уменьшить его просто:

$elements = $xpath->query("//em"); 

и имеют тот же эффект.

+0

okay php dom - это только естественная скремблерная структура? –

+0

Да, это родное расширение для манипуляций с DOM. – VolenD

Смежные вопросы