php - 如何使用 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 行
什么是正确的正则表达式?
解决方案
作为替代方案,您可以使用带有 xpath 表达式的DOMDocument和DOMXPath/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>";
}
这些$items
是DOMNodeList类型,您可以使用例如foreach
. 是DOMAttr$item
类型,您可以从中获取值。
推荐阅读
- javascript - 从字符串 JS / Lodash / TypeScript 中获取数字
- spring-cloud-stream - 设置为 RabbitMQ 生成的消息的属性
- java - Spring AMQP手动容器异常慢
- java - 如何将函数作为参数从 Dart/Flutter 传递给 Android 本机代码?
- firebase - 扩展 Firestore 结构
- android - Chrome 自定义选项卡 Android 的滚动回调或侦听器
- javascript - 展开或折叠节点剑道树视图后调用的事件
- spring - 在不检查 Kafka 服务器的情况下启动 Spring Boot 应用程序
- php - 如何使用 $_COOKIE 变量访问使用标签读取的 cookie?
- python - 在我的 kivy 应用程序中加载纹理图集时出错