PHP Curl和Browser的区别



当我在浏览器中键入地址www.randomDomain.com并读取页面源时,

我看到<tag attrib1="value" attrib2="value2">

但是当我想使用PHP Curl来获取这个页面的内容时,

我在源<tag attrib1="value" attrib2='value2'> 中看到了这一点

有时"符号会被'符号取代。为什么?

这就造成了preg_match()正确模式使用的问题。

您没有在浏览器中查看源代码(通常可以通过"视图"菜单(View→开发商→在Chrome中查看源代码(。您看到的是DOM检查器(内置于浏览器开发工具中(,它显示了DOM当前状态的类似HTML的表示,而不是原始HTML源代码。

"'都有效。解决方案是不使用正则表达式来解析HTML。改为使用DomDocument类:

$url = 'http://www.example.com';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl)
$html = new DOMDocument;
$html->loadHTML($output);

一些网站随机"旋转"标签、类名和其他东西,使内容抓取更加困难,也许这就是为什么有时会显示">

我不认为curl会改变源代码中的任何内容(使用curl 10年(,所以如果这是您遇到的唯一问题,您可以很容易地修改您的preg_match规则,以查找"OR">

最新更新