4

HTTP (craigslist) リンクの var があり、$linkその内容を に入れ$linkhtmlます。この var には、craigslist ページの HTML コード$link.

と の間のテキストを抽出する必要があり<h2>ます</h2>。正規表現を使用できますが、PHP DOM でこれを行うにはどうすればよいですか? 私はこれまでのところこれを持っています:

$linkhtml= file_get_contents($link);
$dom = new DOMDocument;
@$dom->loadHTML($linkhtml);

<h2>要素の内容をvarに入れるには、次に何をすればよい$titleでしょうか?

4

3 に答える 3

4

DOMDocument理解/使用が複雑に見える場合は、HTMLを解析する最も簡単な方法を提供するPHP Simple HTMLDOMParserを試してみてください。

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
于 2012-05-09T22:21:52.967 に答える
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>
于 2012-05-09T22:20:36.353 に答える
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";
        }
    }
}
于 2012-05-09T22:16:13.143 に答える