0

DOMdocument() を使用して、Web ページからタイトルと説明を抽出しようとしていますが、このようなタイトルの抽出に成功しています

$d=new DOMDocument();
$d->loadHTML($html);
$title=$d->getElementsByTagName("title")->item(0)->textContent;

すべてmeta tagsをループして属性をチェックすることで説明を抽出できname="desctiption"ますが、ループするとプロセスが遅くなるため、php DOMdocument で属性セレクターを使用してコンテンツを抽出する直接的な方法があるかどうか知りたいですか??

4

2 に答える 2

2

php のget_meta_tags()関数を使用します。

あなたはそのようにすることができます:

$d=new DOMDocument();
$d->loadHTML($html);
$title=$d->getElementsByTagName("title")->item(0)->textContent;
$meta = get_meta_tags($html);
$description = $meta["description"];
于 2012-07-19T12:09:00.787 に答える
1

これは DOMDocument だけではできないと思いますが、DOMXPath と組み合わせると可能です。

$html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Dom - Xpath test</title>
<meta name="description" content="The first description meta tag" />
<meta name="keywords" content="none, no-keywords" />
<meta name="description" content="the second description tag" />
</head>
<body>
<p>This is the test HTML</p>
</body>
</html>
';

$dom = new DOMDocument();
$dom->loadHTML($html);
$domx = new DOMXPath($dom);
$desc = $domx->query("//meta[@name='description']");

$i = 0;
while ($item = $desc->item($i++)) {
    echo '<p>'.$item->getAttribute('content').'</p>';
}
于 2012-07-19T12:13:43.450 に答える