当我在浏览器中键入地址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">