Я совершенно новый для простого HTML DOM Parser . Я хочу получить дочерний элемент из следующего HTML:
<div class="article"> <div style="text-align:justify"> <img src="image.jpg" title="image"> <br> <br> "Text to grab" <div>......</div> <br></br> ................ ................ </div> </div>
Я пытаюсь получить текст «Текст для захвата»
До сих пор я пробовал следующий запрос:
$html->find('div[class=article] div')->children(3);
Но это не работает. Любая идея, как это решить?
Если это всегда в одном месте, вы можете сделать:
$html->find('.article text', 4);
Здесь вам не нужен simple_html_dom
. Это можно сделать с помощью DOMDocument
и DOMXPath
. Оба являются частью ядра PHP.
Пример:
// your sample data $html = <<<EOF <div class="article"> <div style="text-align:justify"> <img src="image.jpg" title="image"> <br> <br> "Text to grab" <div>......</div> <br></br> ................ ................ </div> </div> EOF; // create a document from the above snippet // if you are loading from a remote url use: // $doc->load($url); $doc = new DOMDocument(); $doc->loadHTML($html); // initialize a XPath selector $selector = new DOMXPath($doc); // get the text node (also text elements in xml/html are nodes $query = '//div[@class="article"]/div/br[2]/following-sibling::text()[1]'; $textToGrab = $selector->query($query)->item(0); // remove newlines on start and end using trim() and output the text echo trim($textToGrab->nodeValue);
Вывод:
"Text to grab"