php 使用 regex101 时正则表达式不工作

php regex not working while working on regex101

这是我的代码。我试图将此字符串与我的正则表达式匹配,但每次在我的本地 xampp 服务器和我的专用服务器上都失败。令人惊讶的是,当我在 regex101 上测试它时,它以某种方式在那里工作。为什么 ??

<?php

$str = "80 ×× ×× ×× ×× ××
×× ×× 91 94 ×× ××
";

echo strlen($str);

if (preg_match("/[0-9*+=\-#@×?]{2,3}[ \[\]().]{1,3}[0-9*+=\-#@×?]{2,3}[ \[\]().]{1,3}[0-9*+=\-#@×?]{2,3}[ \[\]().]{1,3}[0-9*+=\-#@×?]{2,3}[ \[\]().]{1,3}[0-9*+=\-#@×?]{2,3}/", $str)) {
    echo "ok";
}else{
    echo "no mto";
}

?>

您需要使用 u 修饰符为正则表达式启用 unicode 模式,因为主题和模式中的 × 字符是 而不是 ASCII 字符范围。请注意模式定义中的尾随 /u

<?php

$str = <<<EOT

80 ×× ×× ×× ×× ××
×× ×× 91 94 ×× ××

EOT;

if (preg_match("/[0-9*+=\-#@×?]{2,3}[ \[\]().]{1,3}[0-9*+=\-#@×?]{2,3}[ \[\]().]{1,3}[0-9*+=\-#@×?]{2,3}[ \[\]().]{1,3}[0-9*+=\-#@×?]{2,3}[ \[\]().]{1,3}[0-9*+=\-#@×?]{2,3}/u", $str)) {
    echo "ok";
} else {
    echo "no mto";
}

输出显然是:

ok