Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php cURL不使用变量中的URL_Php_Curl - Fatal编程技术网

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()
函数,以确保它按照您的预期运行。