0

我有这个长字符串,我使用 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;
4

2 回答 2

1

文档页面中,找不到任何内容时strpos返回false

尝试在您的IF替代中使用它:

if(strpos($Temp_Output,"Error") !== false ) {
    // Do other things
}

由于在 PHP 中的评估结果为真......无论如何false >= 0,你总是会进入。IF

strpos免责声明:在发布此答案之前,我不知道如何工作。

于 2013-09-06T20:25:46.147 回答
0

Maybe 'Error' is not on page. Try

 Error\s*(\d*)

If you have string interpolation try

 "/Error\\s*(\\d*)/"

Not a php user, but if single quote, try

 '/Error\s*(\d*)/'

If its like Perl, the delimeter is the quote

 /Error\s*(\d*)/
于 2013-09-06T19:52:16.770 回答