我使用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,#之后的值不会传递。