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
这是我的代码。我试图将此字符串与我的正则表达式匹配,但每次在我的本地 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