php正则表达式失败

时间:2015-05-08 06:59:28

标签: php regex preg-match

我试图匹配字符串,但它会进入最后一个其他循环。你能帮忙吗?

$cstg = "<result>True<\/result>";

if (preg_match("/<result>True<\/result>/", $cstg)) {
    echo "result success";
}
else if (preg_match("/\<result\>False\<\/result\>/", $cstg)) {
    echo "result fail";
}
else {
    echo "Something went wrong.";
}

3 个答案:

答案 0 :(得分:4)

问题来自您的$cstg字符串。你不必在html文本中逃脱\。所以下面的代码工作正常:

$cstg = "<result>True</result>";

if( preg_match("/<result>True<\/result>/", $cstg)){
    echo "result success";
}
elseif  (preg_match("/\<result\>False\<\/result\>/", $cstg)){
    echo "result fail";
}else{
    echo "Something went wrong.";
}

答案 1 :(得分:2)

$cstg ="<result>True</result>";
$find="<result>False<\/result>";

if( preg_match("/$find/", $cstg)){
    echo "result success";
}
elseif  (preg_match("/$find/", $cstg)){
    echo "result fail";
}else{
    echo "Something went wrong.";
}

答案 2 :(得分:0)

定义'/'时,您无需转义$cstg。当我从$cstg中删除转义时,您的示例正确运行。另外需要指出的是,您不需要在<中转义>prce_match()。这段代码适合我:

<?php
$cstg = "<result>True</result>";

if (preg_match("/<result>True<\/result>/", $cstg))
{
    echo "result success";
}
elseif  (preg_match("/<result>False<\/result>/", $cstg))
{
    echo "result fail";
}
else
{
    echo "Something went wrong.";
}

您可以看到您将文字'\'放入$cstg,如下所示:

<?php
$cstg = "<result>True<\/result>";
echo $cstg;

输出:

<result>True<\/result>