Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.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 preg_match()返回null和curl响应_Php_Curl_Preg Match - Fatal编程技术网

Php preg_match()返回null和curl响应

Php preg_match()返回null和curl响应,php,curl,preg-match,Php,Curl,Preg Match,我正在尝试从API检索授权代码。我正在使用以下函数: function getAuthToken($url, $email, $password) { $params = array( 'SCOPE' => '****', 'EMAIL_ID' => $email, 'PASSWORD' => $password, ); $url .= '?' . http_build_query($par

我正在尝试从API检索授权代码。我正在使用以下函数:

function getAuthToken($url, $email, $password) {

    $params = array(
        'SCOPE'     => '****',
        'EMAIL_ID'  => $email,
        'PASSWORD'  => $password,
    );

    $url .= '?' . http_build_query($params, '', '&');

    // create a new cURL resource
    $ch = curl_init();

    // set URL and other appropriate options
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $result = curl_exec($ch);

    curl_close($ch);

    preg_match('~.+?AUTHTOKEN=(.+?)\s~', $result, $matches);

    return $matches[1];

}
这将返回NULL。如果我var_dump($result),我会得到:

如果我复制文本并创建一个变量并对该变量运行preg_match,我将得到所需的结果


我看不出我做错了什么。

输出值的
urlencode
-d版本,这样应该可以很容易地发现其中是否有任何字符/字节序列是您无法“看到”的。是否进行更简单的
preg_匹配('~AUTHTOKEN=(\S+),$result,$matches)工作?谢谢,使用
preg_match('~AUTHTOKEN=(.+?)\s~,$result,$matches)似乎起了作用。当我有时间时,我会尝试
urlencode
看看我是否能找出哪里出了问题…如果结果中有换行符(如AUTHTOKEN行之前),那么前面的
+?
表达式将阻止正则表达式匹配,除非使用
s
修饰符(因此点元字符匹配换行符)。我想你已经知道了,我认为实际上有新行。输出值的
urlencode
-d版本,这样应该可以很容易地发现其中是否有任何字符/字节序列,否则你无法“看到”。是否有更简单的
preg_匹配('~AUTHTOKEN=(\S+),$result,$matches)工作?谢谢,使用
preg_match('~AUTHTOKEN=(.+?)\s~,$result,$matches)似乎起了作用。当我有时间时,我会尝试
urlencode
看看我是否能找出哪里出了问题…如果结果中有换行符(如AUTHTOKEN行之前),那么前面的
+?
表达式将阻止正则表达式匹配,除非使用
s
修饰符(因此点元字符匹配换行符)1.我想你明白了,我想实际上有新台词。
string(87) "# #Mon Jul 29 04:01:09 PDT 2019 AUTHTOKEN=**** RESULT=TRUE "