dsqbh42082 2017-02-22 12:25
浏览 49
已采纳

php正则表达式在regex101上工作时无效

Here is my code. I am trying to match this string with my regex but it fails everytime on my local xampp server and my dedicated server. Surprsingly when i test this on regex101 it works there somehow. Why ??

<?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";
}

?>
  • 写回答

1条回答 默认 最新

  • douwen7475 2017-02-22 12:33
    关注

    You need to use the u modifier to enable the unicode mode for regular expressions, since that × character in subject and pattern is not within the ASCII character range. Note the trailing /u in the pattern definition:

    <?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";
    }
    

    The output obviously is:

    ok
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器