我正在尝试使用 php 的简单 html dom 解析器拉入一个网页,但我遇到了一个奇怪的问题。我通过连接两个字符串来定义 url 变量。
$itemUrl="http://www.example.com/";
$pageUrl="default.asp?pg=DispSingleItem&ItemNumber=1234";
$itemUrl .=$pageUrl;
$html=file_get_html($itemUrl);
当我运行这个脚本时,我最终会进入一个显示“未找到项目”的页面。但是,当我回显 $itemUrl、复制输出并将其粘贴到浏览器中时,我会直接转到我要查找的页面。此外,如果我只是将保存为一个字符串的整个 url 以它开头,则会将我带到正确的网页。
$itemUrl="http://www.example.com/default.asp?pg=DispSingleItem&ItemNumber=1234";
$html=file_get_html($itemUrl);
我尝试在连接的字符串上使用 urlencode,但这没有帮助。我真的很难过。当直接复制并粘贴到另一个变量中的相同 url 将我带到正确的页面时,我想不出为什么连接的 url 会将我带到不同的页面。我在这里想念什么?任何帮助都会很棒,谢谢。
编辑:我发现了问题。$pageUrl 的回声显示了这一点:
default.asp?pg=DispSingleItem&ItemNumber=1234
实际上,该变量正在保存一个如下所示的字符串:
default.asp?pg=DispSingleItem&ItemNumber=1234
我的浏览器会自动翻译 & amp; 简单地 &,这看起来正是我所需要的。但是,每当我运行 file_get_html 时,该字符串都没有被转换,因此脚本试图从具有 & amp; 的 url 中获取它。不只是 &。我补充说:
$pageUrl=preg_replace("/amp;/", "", $pageUrl);
有谁知道让浏览器准确输出变量的方法,而不像我的问题中发生的那样改变它?将来知道会很有用。
感谢所有的回复。我没想到这么多或这么快。