我正在使用curl_setopt($ch, CURLOPT_URL, $link)
来获取外部网站,但某些网址中有特殊字符(&, ?, ;)
并且卷曲不起作用。
我使用urldecode
但仍然没有运气,也用已编码的字符替换了特殊字符(例如,%26
而不是&
),但源网站只返回404页面。
答案 0 :(得分:1)
http://www.php.net/manual/en/function.curl-escape.php
//创建一个curl句柄$ ch = curl_init();
//转义用作GET参数$ location =的字符串 curl_escape($ ch,'Hofbräuhaus/München'); //结果: Hofbr%C3%A4uhaus%20%2F%20M%C3%BCnchen
//使用转义字符串$ url =撰写网址 “http://example.com/add_location.php?location= {$位置}”; //结果: http://example.com/add_location.php?location=Hofbr%C3%A4uhaus%20%2F%20M%C3%BCnchen
//发送HTTP请求并关闭句柄curl_setopt($ ch, CURLOPT_URL,$ url); curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true); curl_exec($ CH); curl_close($ CH);
答案 1 :(得分:0)
curl_escape函数仅在PHP 5.5之后可用。
另一种解决方案是使用此处编写的函数 encode_url : http://publicmind.in/blog/url-encoding/ 它对我来说很完美!