我有一个HTTP(craigslist)链接$link
,并将内容放入$linkhtml
。在此var中是craigslist页面的HTML代码$link
。
我需要在<h2>
和</h2>
之间提取文字。我可以使用正则表达式,但我如何使用PHP DOM?到目前为止我有这个:
$linkhtml= file_get_contents($link);
$dom = new DOMDocument;
@$dom->loadHTML($linkhtml);
接下来我该怎么办才能将元素<h2>
的内容放入var $title
?
答案 0 :(得分:4)
如果DOMDocument
看起来很难理解/使用你,那么你可以试试PHP Simple HTML DOM Parser,它提供了解析html最简单的方法。
require 'simple_html_dom.php';
$html = '<h1>Header 1</h1><h2>Header 2</h2>';
$dom = new simple_html_dom();
$dom->load( $html );
$title = $dom->find('h2',0)->plaintext;
echo $title; // outputs: Header 2
答案 1 :(得分:3)
您可以使用此代码:
$linkhtml= file_get_contents($link);
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($linkhtml); // loads your html
$xpath = new DOMXPath($doc);
$h2text = $xpath->evaluate("string(//h2/text())");
// $h2text is your text between <h2> and </h2>
答案 2 :(得分:1)
您可以使用XPath执行此操作:未经测试,可能包含错误
$linkhtml= file_get_contents($link);
$dom = new DOMDocument;
@$dom->loadHTML($linkhtml);
$xpath = new DOMXpath($dom);
$elements = $xpath->query("/html/body/h2");
if (!is_null($elements)) {
foreach ($elements as $element) {
$nodes = $element->childNodes;
foreach ($nodes as $node) {
echo $node->nodeValue. "\n";
}
}
}