【发布时间】:2014-05-29 05:30:02
【问题描述】:
我知道对于这个论坛上的许多好人来说,这可能是老生常谈,但是在这里寻找解决方案几个小时后,我仍然遇到了麻烦。
我已经确认我可以简单地调用 file_get_contents() 来工作:
$content = file_get_contents('example.com');
print $content;
(按预期输出网站的内容。)
而且,如果我将脚本生成的 URL 之一直接插入浏览器,也可以:
http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=/netahtml/PTO/search-adv.htm&r=0&p=1&f=S&l=50&Query=AN/"联合信号" AND (((((((CCL/29/$ OR CCL/62/$) OR CCL/165/$) OR CCL/180/$) OR CCL/236/ $) OR CCL/237/$) OR CCL/241/$) OR CCL/248/$) OR CCL/417/$)&d=PTXT
(实际上,它是在我的代码中生成/存储为名为 $url 的文字字符串。不过,当我键入此内容时,我注意到引号在这里抛出了一些东西。不确定这是否会转化为我的问题与否。)
但是,当我尝试将两者结合起来时,它会立即失败:
$content = file_get_contents($url);
print $content;
(什么都不输出。)
到目前为止,我已经尝试了所有涉及 cURL 的各种用途的建议,当然还有 json 来尝试了解正在发生的事情。但是,除了我让 HTTP 400 吐出的一种情况,以及另一种输出为 NULL 的情况(抱歉,我丢失了我一直在阅读的特定帖子的链接)之外,没有运气。
我敢肯定,我在这里错过了一些非常简单的东西,当我找到它时,我可能会 ::head desk::,但现在我被卡住了。有什么建议吗?
提前致谢
编辑:我忘了包括,错误日志中也没有任何内容。 编辑:allow_url_fopen 设置正确。 编辑:使用 urlencode($url) 确实会产生以下错误,当上面的例子被调用时...... [29-May-2014 02:08:57 America/New_York] PHP 警告:file_get_contents(http%3A%2F%2Fpatft.uspto.gov%2Fnetacgi%2Fnph-Parser%3FSect1%3DPTO2%26Sect2%3DHITOFF%26u%3D% 2Fnetahtml%2FPTO%2Fsearch-adv.htm%26r%3D0%26p%3D1%26f%3DS%26l%3D50%26Query%3DAN%2F%22alied+signal%22%0D%0A+AND+%28%28%28% 28%28%28%28%28CCL%2F29%2F%24+OR+CCL%2F62%2F%24%29+OR+CCL%2F165%2F%24%29+OR+CCL%2F180%2F%24% 29+OR+CCL%2F236%2F%24%29+OR+CCL%2F237%2F%24%29+OR+CCL%2F241%2F%24%29+OR+CCL%2F248%2F%24%29+ OR+CCL%2F417%2F%24%29%26d%3DPTXT):无法打开流:第 21 行的 C:\inetpub\wwwroot\PHP-CGI\test.php 中的参数无效
编辑:一些测试代码...
<?php
print "Testing...<BR>";
define("PATFT_head",'http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.htm&r=0&p=1&f=S&l=50&Query=AN%2F%22');
define("PATFT_foot",'%22+AND+%28%28%28%28%28%28%28%28CCL%2F29%2F%24+OR+CCL%2F62%2F%24%29+OR+CCL%2F165%2F%24%29+OR+CCL%2F180%2F%24%29+OR+CCL%2F236%2F%24%29+OR+CCL%2F237%2F%24%29+OR+CCL%2F241%2F%24%29+OR+CCL%2F248%2F%24%29+OR+CCL%2F417%2F%24%29&d=PTXT');
$assignees = file("./config/assignees.txt");
foreach ($assignees as $name) {
$url= PATFT_head.$name.PATFT_foot;
$content = file_get_contents($url);
#print "Should see the page here...<BR>";
print $content;
}
print "<BR>Done.";
?>
assignees.txt 的内容是一系列搜索词(在本例中为专利持有人的受让人姓名),每行 1 个。
【问题讨论】:
-
和 ::head desk:: 这就是我处理 URL 中引号的方式。请注意对上面测试代码的最终更正。我猜在这种情况下 IE/Firefox/Chrome 比 PHP 解释器更聪明。感谢所有(试图)提供帮助的人。
标签: php curl file-get-contents