当我在浏览器中键入地址www.randomDomain.com
并阅读页面源时,
我看到<tag attrib1="value" attrib2="value2">
但是当我想使用PHP Curl获取此页面的内容时,
我在源<tag attrib1="value" attrib2='value2'>
有时,"
符号会被'
符号替换。为什么呢?
这个原因会导致使用preg_match()
的正确模式出现问题。
答案 0 :(得分:3)
您没有在浏览器中查看源代码(通常可以通过“查看”菜单(“查看”→“开发人员”→“在Chrome中查看源代码”)找到该源)。您正在查看DOM Inspector(内置于浏览器开发人员工具中),它显示了DOM当前状态的HTML表示,而不是原始HTML源代码。
答案 1 :(得分:2)
"
和'
都有效。解决方案是不使用正则表达式来解析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);
答案 2 :(得分:-1)
有些网站会随机“轮换”标签,类名和其他内容,使内容抓取更加困难,这可能就是“因为”有时会显示“
我不相信curl会改变源代码中的任何内容(使用curl 10年),所以如果这是您遇到的唯一问题,您可以轻松修改preg_match规则以查找“OR”