我很确定我知道问题是什么,但是我无法解决它的问题,而我现在还不知道该怎么做。
我要做的就是确定名字和姓氏字段的输入。此代码正在运行php5的本地服务器上运行:
<?php
$regex = "John's Jerod";
if (!preg_match("/^[A-Za-z\'\,\.\s]+$/", $regex)) {
echo "ERROR!";
} else {
echo "NO ERROR!";
}
?>
正如预期的那样,这会返回NO ERROR!,但是当我在我的实时服务器上运行它时,我只会获得具有相同数据的ERROR。
我已经确定这是逗号扔掉了!而且我很确定,因为我正在运行的php版本在John的名字中执行自动转义,所以我在所有输出上运行了striptags并且仍然出现相同的错误。
有人知道我做错了什么或我如何解决这个问题?
截至目前,我已经在“虫子”中待了大约8个小时。经过RegEex的40多种变化而没有运气。
我检查并三重检查了我的所有表单字段名称,变量等,以确保所有内容匹配,其他一切正常。
SOS
答案 0 :(得分:1)
尝试专门检查1
。根据文档,它会在错误时返回FALSE
(严格检查),对于没有匹配会返回0
(严格检查),如果匹配则返回1
(因为它在一个位置停止)。
另外,根据我自己的喜好,我使用〜符号表示我的正则表达式。就像David Powers所说的那样(只是他根本没有纠正它),你不需要大部分的反斜杠(仅适用于时期和空间)。
<?php
$regex = "John's Jerod";
if (preg_match("~^[A-Za-z',\.\s]+$~", $regex) !== 1) {
echo "ERROR!";
} else {
echo "NO ERROR!";
}
?>
希望这有帮助!
编辑:另外,您说您正在使用strip_tags
?剥离字符串中的任何HTML标记 - 而不是斜杠。您需要strip_slashes
来删除斜杠,不 strip_tags
;)
答案 1 :(得分:0)
你的正则表达式不需要所有那些反斜杠。它应该是这样的:
"/^[A-Za-z',\.\s]+$/"
另外,您可以参考使用striptags()。如果您的服务器启用了魔术引号,您应该使用stripslashes()。
[编辑正则表达式]