我使用CURL从表单帖子中获取数据时收到了这个长字符串。在这个长字符串中,我需要找到“错误”这个词,然后抓住它之后的任何数字。因此,如果在搜索过程中发现“错误2”,我需要抓住2并显示它。我的问题是,当我尝试打印出来时,我得到的是NULL和一个空数组。我的代码如下。
$Rec_Data = curl_exec($ch);
ob_start();
header("Content-Type: text/html");
$Temp_Output = $Rec_Data;
if(strpos($Temp_Output,"Error")>=0){
preg_match("/Error (\d+)/", $Temp_Output, $error);
var_dump ($error[1]); //prints NULL for $error[0] and $error[1] and when printing $error it is an empty array.
}
这是我的CURL代码
$PostVars = "lname=" . $lname . "&fname=". $fname . "&uid=" . $uid . "&rsp=" . $rsp . "&z1=" . $z1 . "&module=" . $module . "&CFID=" . $CFID . "&CFTOKEN=" . $CFTOKEN;
$ch = curl_init(POSTURL);
curl_setopt($ch, CURLOPT_POST ,1);
curl_setopt($ch, CURLOPT_POSTFIELDS , $PostVars);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1);
curl_setopt($ch, CURLOPT_HEADER ,0); // DO NOT RETURN HTTP HEADERS
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); // RETURN THE CONTENTS OF THE CALL
$Rec_Data = curl_exec($ch);
var_dump ($Rec_Data);
ob_start();
header("Content-Type: text/html");
$Temp_Output = $Rec_Data;
答案 0 :(得分:1)
从documentation page,strpos
返回false
时找不到任何内容。
请尝试在IF
中使用此功能:
if(strpos($Temp_Output,"Error") !== false ) {
// Do other things
}
由于false >= 0
在PHP中评估为真,所以无论如何都会进入IF
。
免责声明:在发布此答案之前,我不知道strpos
的工作方式。
答案 1 :(得分:0)
可能'错误'不在页面上。 尝试
Error\s*(\d*)
如果你有字符串插值,请尝试
"/Error\\s*(\\d*)/"
不是php用户,但如果单引号,请尝试
'/Error\s*(\d*)/'
如果它像Perl一样,那么分隔符就是引用
/Error\s*(\d*)/