Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php URL编码错误_Php - Fatal编程技术网

php URL编码错误

php URL编码错误,php,Php,我的代码中有以下行 $lib = simplexml_load_file("http://www.goodreads.com/book/title.xml?key=MYAPIKEY&title=" . $current_book,null,true); 当这个被发送时,它是这样发送的 http://www.goodreads.com/book/title.xml?key=MYAPIKEY&title=Dashing%2BThrough%2Bthe%2BSnow%2BMary%

我的代码中有以下行

$lib  = simplexml_load_file("http://www.goodreads.com/book/title.xml?key=MYAPIKEY&title=" . $current_book,null,true);
当这个被发送时,它是这样发送的

http://www.goodreads.com/book/title.xml?key=MYAPIKEY&title=Dashing%2BThrough%2Bthe%2BSnow%2BMary%2BHiggins%2BClark%0A
发生这种情况时,将找不到书本,并返回错误

但是,如果我在浏览器中键入

http://www.goodreads.com/book/title.xml?key=MYAPIKEY&title=Dashing+Through+the+Snow+Mary+Higgins+Clark
然后我得到一个有效的XML响应,我可以用它来完成我的代码

那么,如何在不将+更改为%2B的情况下发送此信息


URL末尾的%0A是什么?

您的URL似乎被编码了两次

由于您根本没有在所显示的代码中进行编码(顺便说一句,这是进行编码的适当位置),所以它肯定以前发生过

错误不在此代码中,而是在此之前的某个地方

您可以这样更正它:

$lib  = simplexml_load_file("http://www.goodreads.com/book/title.xml?key=MYAPIKEY&title=" . trim(urldecode($current_book)),null,true);
但是,这只是现有错误的解决方法,您应该修复先前的编码


另外,您提到的字符是一个换行符,这就是trim的原因。

显示整个url,不带php变量。PS:
%2B
是加号字符十六进制编码,您将执行两次编码,
%0A
是新行字符。“那么,如何在不将+更改为%2B的情况下发送此内容?”---不要过早执行编码,将url存储在变量中并替换字符的代码会很好,但不会解决您的问题?谢谢。在使用变量$this->get_book_数组(trim(urldecode($line))之前,我对它进行了编码;并保留了我原来的路线,它的工作。再次感谢