首页 > 解决方案 > 如何使用 php 正则表达式获取描述?

问题描述

我正在制作一个网络爬虫,我需要提取包含描述的元数据,这就是我所做的:

$html = file_get_contents('http://www.google.com');
preg_match('/<meta name="description" content="(.*)"/>\i', $html, $description);
$description_out = $description;
var_dump($description_out);

我得到这个错误

警告:preg_match(): Unknown modifier '>' in C:\xampp\htdocs\webcrawler\php-web-crawler\index.php 第 21 行

什么是正确的正则表达式?

标签: phpregex

解决方案


作为替代方案,您可以使用带有 xpath 表达式的DOMDocumentDOMXPath/html/head/meta[@name="description"]/@content来获取内容属性,而不是使用正则表达式。

$document = new DOMDocument();
$document->loadHTML($html);
$xpath = new DOMXPath($document);
$items = $xpath->query('/html/head/meta[@name="description"]/@content');
foreach ($items as $item) {
    echo $item->value . "<br>";
}

这些$itemsDOMNodeList类型,您可以使用例如foreach. 是DOMAttr$item类型,您可以从中获取


推荐阅读