需要帮助获取长字符串中特定单词后面的数字

时间:2013-09-06 19:44:58

标签: php regex curl

我使用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;

2 个答案:

答案 0 :(得分:1)

documentation pagestrpos返回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*)/