如何在PHP中验证带有空格的字母字符串的有效性?
我知道有函数如何在PHP中验证带有空格的字母字符串的有效性?,php,regex,Php,Regex,我知道有函数ctype_alpha,但当字符串包含空格(空格字符)时,该函数将返回FALSE 如何允许字母字符和空格,而不允许其他字符 if (preg_match("^/[a-zA-Z ]+$/", $input)) { // input matches } 演示: 文档:ctype_alpha(preg_replace('/\s/',''$mystring)) 内部表达式返回不带空格的字符串,然后根据需要使用ctype_alpha`` $is_alpha_space = ctype
ctype_alpha
,但当字符串包含空格(空格字符)时,该函数将返回FALSE
如何允许字母字符和空格,而不允许其他字符
if (preg_match("^/[a-zA-Z ]+$/", $input)) {
// input matches
}
演示:文档:
ctype_alpha(preg_replace('/\s/',''$mystring))
内部表达式返回不带空格的字符串,然后根据需要使用ctype_alpha``
$is_alpha_space = ctype_alpha(str_replace(' ', '', $input)));
或
删除空格是一个不错的选择,但请记住,现在ctype_alpha会导致空字符串出现false!下面是我使用的方法
function validateAlpha($valueToValidate, $spaceAllowed = false) {
if ($spaceAllowed) {
$valueToValidate = str_replace(' ', '', $valueToValidate);
}
if (strlen($valueToValidate) == 0) {
return true;
}
return ctype_alpha($valueToValidate);
}
我将使用一个简单的正则表达式和php函数,如下所示:
if(preg_match("/^[a-zA-Z ]+$/", $varToCheck)){
//your code here
}
这里重要的部分是识别所需部分的正则表达式,在我的例子中,我希望名称字段使用文本,并使用类似于此处的空格。[a-z]是从a到z的范围,a-z是从a到z的范围,末尾的“”表示空格
希望这对其他人有所帮助。在检查之前用数字替换空格?@DanRedux只有在字符串事先不包含数字时才有效。为什么?如果它事先包含数字,它将正确返回false。如果它包含后面的数字,它将正确返回false。。它唯一能做的就是把空格当作坏记号,把它们变成坏记号。@DanRedux你误读了这个问题。OP想要接受包含空格的字符串;
ctype_alpha
的问题在于它没有。然后将空格改为字母“a”:p尽管要知道,[a-z]
可以。正则表达式中有输入错误。它应该以/^
开头,而不是以^/
开头。请注意,此正则表达式将允许只包含空格的字符串。这可能是也可能不是期望的结果。非常感谢。我喜欢第一个。我只是想了解一下,你是怎么知道第一个的?因为我甚至不能从文档中看出,这不是一个函数。它使用str_replace()
删除空格,然后ctype_alpha()
检查结果是否按字母顺序排列。我确实理解,尽管您是如何知道的,但文档中的ctype页面没有指出它(您可以这样做),或者是这样做的?我不知道,你必须考虑你想要完成什么,有时你必须分步完成。你会问自己,“如果ctype\u alpha
不允许使用空格,我能做些什么?”答案是,你可以在将空格传递给ctype\u alpha
之前删除空格,所以你可以去寻找可以做到这一点的东西。如果查看手动输入的str_replace
的返回值部分,您会看到它返回一个包含替换值的字符串。因此,您可以将str\u replace
的返回值传递给ctype\u alpha
。函数名通常是自解释的。在每页的侧边栏中都有该部分的所有函数列表,在另见部分中也有相关函数列表。另外,大多数页面都有用户贡献的代码和帮助。这属于“如果您不需要花哨的替换规则”的类别,您应该始终使用str\u replace
,而不是preg\u replace
。
if(preg_match("/^[a-zA-Z ]+$/", $varToCheck)){
//your code here
}