cURL和URL中的特殊字符


cURL and special characters in URL

我使用curl_setopt($ch, CURLOPT_URL, $link)来获取外部站点,但在一些URL中有特殊字符(&, ?, ;),curl不起作用。

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

http://www.php.net/manual/en/function.curl-escape.php

//创建一个卷曲句柄$ch=curl_init();

//转义用作GET参数$location的字符串=curl_escape($ch,'Hofbräuhaus/München');//结果:Hofbr%C3%A4uhaus%20%2F%2M%C3%BCnchen

//使用转义字符串$URL编写URL="http://example.com/add_location.php?location={$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_RETURNTTRANSFER,true);curl_exec($ch);curl_close($ch);

curl_escape函数仅在PHP 5.5之后可用。

另一种解决方案是使用此处编写的函数encode_url:http://publicmind.in/blog/url-encoding/它非常适合我!

urlencode($val)适用于我。例如:urlencode($hello#Test);没有urlencode,#之后的值不会传递。