【发布时间】:2015-08-20 08:50:04
【问题描述】:
<?php
$page = file_get_contents("https://www.google.com");
preg_match('#<div id="searchform" class="jhp big">(.*?)</div>#Uis', $page, $matches);
print_r($matches);
?>
我编写的以下代码必须抓取另一个网页的特定部分(在本例中为 google)。不幸的是它不起作用,我不知道为什么(因为正则表达式本身正在抓取 div 内的所有内容)。
我们将不胜感激!
【问题讨论】:
-
在处理 HTML 时应该使用 HTML/XML 解析器。正则表达式是一种通用 解决方案,解析器是专门构建的解决方案。如果存在,请始终使用专门构建的解决方案。
-
它可以在您自己的网站上使用吗?
-
U反转贪婪/懒惰的量词,我猜这就是这里的问题。删除U修饰符,.*?将匹配尽可能少的字符。但是,为什么要使用正则表达式来获取 HTML 标签内容呢?使用 DOM 解析器。