URL中的cURL和特殊字符

时间:2013-11-19 01:59:11

标签: php curl special-characters

我正在使用curl_setopt($ch, CURLOPT_URL, $link)来获取外部网站,但某些网址中有特殊字符(&, ?, ;)并且卷曲不起作用。

我使用urldecode但仍然没有运气,也用已编码的字符替换了特殊字符(例如,%26而不是&),但源网站只返回404页面。

2 个答案:

答案 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/ 它对我来说很完美!