Php cURL不使用变量中的URL
我有一个函数Php cURL不使用变量中的URL,php,curl,Php,Curl,我有一个函数GetContentsCurl($url),通常可以正常工作,但我遇到了一个带有奇怪问题的用例。如果我在一个变量中传入一个URL,它就不起作用,但是如果我回显该变量,复制并粘贴URL,并将其作为参数粘贴到函数中,它就可以正常工作 这是什么原因造成的?字符串不应该完全相同,因此具有完全相同的功能吗 public static function UrlGetContentsCurl(){ // parse the argument passed and set defau
GetContentsCurl($url)
,通常可以正常工作,但我遇到了一个带有奇怪问题的用例。如果我在一个变量中传入一个URL,它就不起作用,但是如果我回显该变量,复制并粘贴URL,并将其作为参数粘贴到函数中,它就可以正常工作
这是什么原因造成的?字符串不应该完全相同,因此具有完全相同的功能吗
public static function UrlGetContentsCurl(){
// parse the argument passed and set default values
$arg_names = array('url', 'timeout', 'getContent', 'offset', 'maxLen');
$arg_passed = func_get_args();
$arg_nb = count($arg_passed);
if (!$arg_nb){
echo 'At least one argument is needed for this function';
return false;
}
$arg = array (
'url' => null,
'timeout' => ini_get('max_execution_time'),
'getContent'=> true,
'offset' => 0,
'maxLen' => null
);
foreach ($arg_passed as $k=>$v){
$arg[$arg_names[$k]] = $v;
}
// CURL connection and result
$ch = curl_init($arg['url']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($ch, CURLOPT_RESUME_FROM, $arg['offset']);
curl_setopt($ch, CURLOPT_TIMEOUT, $arg['timeout']);
curl_setopt($ch, CURLOPT_ENCODING, 'identity');
$result = curl_exec($ch);
$chErr = curl_error($ch);
curl_close($ch);
if ($chErr){
echo $chErr."<br/>";
}
elseif($arg['getContent']){
return $arg['maxLen']
? substr($result, 0, $arg['maxLen'])
: $result;
}
return null;
}
公共静态函数UrlGetContentsCurl(){
//分析传递的参数并设置默认值
$arg_names=array('url','timeout','getContent','offset','maxLen');
$arg_passed=func_get_args();
$arg\u nb=计数($arg\u通过);
如果(!$arg\u nb){
echo“此函数至少需要一个参数”;
返回false;
}
$arg=数组(
'url'=>null,
'timeout'=>ini\u get('max\u execution\u time'),
“getContent”=>true,
“偏移量”=>0,
'maxLen'=>null
);
foreach($arg_作为$k=>$v传递){
$arg[$arg_name[$k]]=$v;
}
//旋度连接及其结果
$ch=curl_init($arg['url']);
curl_setopt($ch,CURLOPT_头,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0(Windows;U;windowsnt 5.1;en-US;rv:1.8.1.13)Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($ch,CURLOPT_RESUME_FROM,$arg['offset']);
curl_setopt($ch,CURLOPT_TIMEOUT,$arg['TIMEOUT']);
curl_setopt($ch,CURLOPT_编码,'identity');
$result=curl\u exec($ch);
$chErr=旋度误差($ch);
卷曲关闭($ch);
如果($chErr){
回声$chErr.“
”;
}
elseif($arg['getContent'])){
返回$arg['maxLen']
?substr($result,0,$arg['maxLen']))
:$result;
}
返回null;
}
请给我们看一些代码。添加了问题中的函数“不工作”是什么?您是否收到任何错误消息?对不起,我应该澄清一下,如果我通过变量传递URL,curl\u exec将返回空白,如果我粘贴URL,则返回页面。就在curl\u init之前,您可以转储$arg变量吗?我猜它并没有像你期望的那样被设置。我将仔细查看func\u get\u args()
函数,以确保它能达到预期效果。请向我们展示一些代码。添加了有问题的函数“不起作用”是什么?您是否收到任何错误消息?对不起,我应该澄清一下,如果我通过变量传递URL,curl\u exec将返回空白,如果我粘贴URL,则返回页面。就在curl\u init之前,您可以转储$arg变量吗?我猜它并没有像你期望的那样被设置。我将仔细查看func\u get\u args()
函数,以确保它按照您的预期运行。