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))之前,我对它进行了编码;并保留了我原来的路线,它的工作。再次感谢