file_get_contents和&

时间:2012-09-18 08:15:22

标签: php url

所以这似乎是一个常见的错误,但我已经尝试了所有的东西,它只是不起作用!

我的代码目前看起来像这样:

$apikey = "XXXXXXXXX";
$search_url = "https://www.googleapis.com/shopping/search/v1/public/products?key=$apikey&country=US&q=$item_title&restrictBy=gtin&alt=json";

$response = file_get_contents($search_url);

我已经尝试了从urldecode到html_entity_decode / encode的所有内容,以及我能找到的所有解决方案,但仍然会遇到同样的错误:

file_get_contents(https://www.googleapis.com/shopping/search/v1/public/products?key=XXXXX&country=US&q=THESTRING&restrictBy=gtin&alt=json) failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request

正如你所看到的,而不是普通的& (&符号)我得到& amps

我记得有类似的问题,而问题只是我在字符串的开头没有“http://”。但正如你所看到的,情况并非如此。

谢谢!

3 个答案:

答案 0 :(得分:0)

你试过单引号,所以你的测试字符串会被字面上理解吗?如在

$search_url = 'https://www.googleapis.com/shopping/search/v1/public/products?key='.$apikey.'&country=US&q=$item_title&restrictBy=gtin&alt=json';

答案 1 :(得分:0)

尝试从参数中删除空格,例如:

search_jobs.php?catagory_select=1&keys=head of IT 

在IT"

这个词之间留出空格时,它无法正常工作
search_jobs.php?catagory_select=1&keys=head-of-IT

我用" - "取代了空间。破折号及其现在正在运作。

如果您认为您需要在脚本中进行大量更改以替换所有空格,那么这就是在我打开页面时打开页面的快捷方式:

" search_jobs.php?catagory_select = 1& keys = IT负责人"

现在自动从参数" IT负责人"您需要在加载页面上添加javascript代码" search_jobs.php "

    <script>
if(location.href.indexOf('%20') > -1){
    location.href = location.href.replace('%20','-');
}
    </script>

在页面顶部添加此代码,它将用&#34; - &#34;替换空格在打开页面之前自动破折号。

谢谢

答案 2 :(得分:-1)

我的问题的答案很简单:

当$ item_title包含空格时,PHP引发了错误。要解决这个问题,我所要做的就是将其添加到我的代码中:

strtr( $item_title, " ", "+" );

将空格更改为加号。没有更多失败的请求!

谢谢你们。