隐藏的空格char导致preg_match返回false

时间:2014-10-01 15:01:34

标签: php regex

我有一个奇怪的问题,如果标题没有多大意义,我道歉,因为我似乎无法说出来。

基本上我试图检查某个字符串是否只是数字,为此我使用的是regluar表达式

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

这是从调试中难以解释的地方我已经了解$ordernumber[1] "41720"var dumped $ordernumber[1]的字符串长度为 6 时应该preg_match("/^[0-9]+$\D/", $ordernumber[1]);那里只有 5位数

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

如何找出字符串中的哪个空格/特殊字符?

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

注意字符串长度

感谢您的阅读。

刚想通了如果我使用{{1}} \ D(非数字)然后它确实返回true,这解决了我的问题,仍然想知道它是什么字符,如果有人知道如何找出

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

enter image description here

2 个答案:

答案 0 :(得分:3)

如果您想知道字符串中的字符,请执行以下操作:

echo bin2hex($string);

答案 1 :(得分:0)

尝试将正则表达式修改为

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