2016-04-11 2 views
1

я следующий HTMLGrab тег дизайн с PHP DOMXPath

<ul class="L1_1"> 
<li><div style="font-size:10pt;font-family:'Arial';">A, B, C</div></li></ul> 

Я пытаюсь схватить <li> со всем стилем и тега. Вот что у меня до сих пор с domxpath

$ garb1 = $ xpath-> query ('// ul/li');

О коде будет захватывать и отображать "A, B, C", Я хотел, чтобы захватить весь <li>'s стиль, как этот

<li><div style="font-size:10pt;font-family:'Arial';">A, B, C</div></li> 

Это possbile?

Благодаря

+0

Использовать 'echo $ dom-> saveHTML ($ garb1-> item (0));' (Заменить '$ dom' на ваше имя объекта DOM) – fusion3k

+0

' $ objectname = new DOMDocument() '=>' $ objectname 'это ваше имя объекта. – fusion3k

+0

Это то, что у меня есть. function returnXPathObject ($ item) { \t $ xmlPageDom = new DomDocument(); \t @ $ xmlPageDom-> loadHTML ($ item); \t \t \t $ xmlPageXPath = новый DOMXPath ($ xmlPageDom); \t return $ xmlPageXPath; } $ clget = curlGet ('http: //localhost/webscrap/test.html'); $ xpath = returnXPathObject ($ clget) $ clget = curlGet ('http: //localhost/webscrap/test.html'); $ xpath = returnXPathObject ($ clget) $ garb1 = $ xpath-> query ('// ul/li'); – slphp

ответ

0

Согласно комментариям, вы должны использовать этот синтаксис для отображения HTML-узла:

echo $domobject->saveHTML($node); 

Вы используете эту функцию:

function returnXPathObject($item) 
{ 
    $xmlPageDom = new DomDocument(); 
    @$xmlPageDom->loadHTML($item);  
    $xmlPageXPath = new DOMXPath($xmlPageDom); 
    return $xmlPageXPath; 
} 

$clget = curlGet('localhost/webscrap/master-tung-doc-test.html'); 
$xpath = returnXPathObject($clget); 

Название DOMDocument объект $xmlPageDom, но проблема в том, что вы не можете получить к нему доступ, потому что он находится внутри функции.

Чтобы получить доступ к нему можно модифицировать функцию таким образом:

function returnDomObject($html) 
{ 
    $dom = new DomDocument(); 
    @$dom->loadHTML($html); 
    $xpath = new DOMXPath($dom); 
    return (object) array('dom' => $dom, 'xpath' => $xpath); 
} 

$clget = curlGet('localhost/webscrap/master-tung-doc-test.html'); 
$dom = returnDomObject($clget); 

$garb1 = $dom->xpath->query('//ul/li'); 

echo $garb1->dom->saveHTML($garb1->item(0)); 

К таким образом, ваша функция возвращает объект как с объектом DOM и объекта XPath: нужно только изменить синтаксис для вызова его , используя $dom->xpath-> вместо $xpath-> и $dom->dom-> для доступа к объекту DOM.

На самом деле, ИМХО, лучшим способом может быть создание расширенного класса DOMDocument. Если вам интересно, я могу показать вам пример.

+0

Спасибо fusion3k, позвольте мне попробовать. – slphp

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