Php preg_match()返回null和curl响应
我正在尝试从API检索授权代码。我正在使用以下函数: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
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 "