php 正则表达式失败

php Regular expression fails

我正在尝试匹配字符串,但它会进入最后一个 else 循环。你能提供任何帮助吗?

$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.";
}

问题来自您的 $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.";
}

定义$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>
$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.";
}