【问题标题】:Hidden whitespace char causing preg_match to return false隐藏的空白字符导致 preg_match 返回 false
【发布时间】:2014-10-01 15:01:33
【问题描述】:

我有一个奇怪的问题,如果标题没有多大意义,我深表歉意,因为我似乎无法用词正确。

基本上我正在尝试检查某个字符串是否只是数字,为此我使用正则表达式

preg_match("/^[0-9]+$/", $ordernumber[1]);

这是很难从调试中解释的地方我了解到$ordernumber[1] 应该是 "41720"var dumped $ordernumber[1] 只有 时字符串长度为 6 5 个数字

这让我相信该字符串中有一个空格字符,而该字符在正则表达式中没有考虑到。

如何找出字符串中的空白/特殊字符?

附件是转储的图片以及预匹配结果为 0/false。

注意字符串长度

感谢您的阅读。

刚刚发现如果我使用preg_match("/^[0-9]+$\D/", $ordernumber[1]); \D(non-digit) 那么它确实返回 true,这解决了我的问题,但仍然想知道它是什么字符,如果有人知道如何找出的话。

下面的答案将修剪字符串开头和结尾的空白字符,实际上会做我想要的。

【问题讨论】:

    标签: php regex


    【解决方案1】:

    如果你想知道字符串中的字符是什么,只需:

    echo bin2hex($string);
    

    【讨论】:

      【解决方案2】:

      尝试将您的正则表达式修改为

      preg_match("/^[0-9]+$/", trim($ordernumber[1]));
      

      【讨论】:

      • 您好,谢谢,我想出了在哪里编辑正则表达式,但这完全符合我的要求,所以我会接受这个作为答案。感谢您提供有关有用功能的信息!
      猜你喜欢
      • 1970-01-01
      • 2013-11-14
      • 2020-04-07
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      相关资源
      最近更新 更多