0

私の PHP スクリプトは div id からコンテンツをフェッチできますが、このフェッチ データをフィルタリングし、この div id<div id="navbar" class="n">を持つコンテンツの一部を除外する方法は何ですか?このコードで試しましたが、機能しません

$regex = '#\<div id="navbar"\>(.+?)\<\/div\>#s';
preg_match($regex, $displaybody, $matches);
$match = $matches[0];
echo "$match";`

コンテンツを取得するには、HTML DOM パーサーを使用しています。

4

1 に答える 1

1

正規表現を使用して html を解析することは、通常は悪い考えです。DOM を使用してノードを選択できます。

$input = '<html> <body> some content <span class="a">b</span> <div id="navbar" class="n">find me <span class="a">b</span></div> </html>';

$doc = new DOMDocument;
$doc->loadHTML($input);
$navbar = $doc->getElementById('navbar');

$innerhtml = '';
foreach ($navbar->childNodes as $cn) {
    $innerhtml .= $doc->saveHTML($cn);
}
print $innerhtml;
于 2012-09-04T05:56:58.953 に答える