遇到问题了。
假设我有一个由单个字符组成的参数,我只想接受字母字符。如何确定传递的参数是拉丁字母表 (a
–z
) 的成员?
顺便说一下,我正在使用 PHP Kohana 3。
谢谢。
遇到问题了。
假设我有一个由单个字符组成的参数,我只想接受字母字符。如何确定传递的参数是拉丁字母表 (a
–z
) 的成员?
顺便说一下,我正在使用 PHP Kohana 3。
谢谢。
http://php.net/manual/zh/function.ctype-alpha.php
<?php
$ch = 'a';
if (ctype_alpha($ch)) {
// Accept
} else {
// Reject
}
如果您正确地设置了区域设置,这也会考虑到它。
编辑:为了完整起见,这里的其他帖子作者认为您需要确保参数是单个字符,否则该参数无效。要检查字符串的长度,可以使用strlen()。 如果strlen()
返回任何非1数字,则也可以拒绝该参数。
目前而言,在回答时,您的问题表明您在某个地方有一个单个字符参数,并且您想检查它是否为字母。 我提供了一种通用解决方案,可以做到这一点,并且还适用于区域设置。
$ch
的长度超过一个字符呢? - Asaphctype_alpha()
的作用。OP想要拒绝所有超过一个字符长度的输入,而你的解决方案并没有做到这一点。 - Asaph在你的方法顶部使用以下守卫语句:
if (!preg_match("/^[a-z]$/", $param)) {
// throw an Exception...
}
如果你想要允许大写字母,那么相应地更改正则表达式:
if (!preg_match("/^[a-zA-Z]$/", $param)) {
// throw an Exception...
}
支持不区分大小写的另一种方法是使用/i
不区分大小写修饰符:
if (!preg_match("/^[a-z]$/i", $param)) {
// throw an Exception...
}
!
。谢谢 :) - Asaph/^\p{Alphabetic}+$/
。 - tchristpreg_match('/^[a-zA-Z]$/', $var_vhar);
这个方法将返回一个整数值:如果没有匹配项,则返回0;如果有匹配项,则返回1。
我会像Nick建议的那样使用ctype,因为它不仅比正则表达式更快,甚至比PHP内置的大多数字符串函数都要快。但你还需要确保它是单个字符:
if (ctype_alpha($ch) && strlen($ch) == 1) {
// Accept
} else {
// Reject
}
AB
,则应该被拒绝,不管它们是否都使用 ctype_alpha
进行了检查。请参见问题。 - Anthony你不能使用 [a-zA-Z] 匹配 Unicode。
以下是与 Unicode 相关的示例:
if ( preg_match('/^\p{L}+$/u', 'my text') ) {
echo 'match';
} else {
echo 'not match';
}
希望这能有所帮助。这是一个名为ctype_alpha的简单php函数。
$mystring = 'a'
if (ctype_alpha($mystring))
{
//Then do the code here.
}
ctype_alpha
的信息,每个回答都发布了超过4年。这些答案还包括更多的解释,并将示例集成到OP代码正在执行的内容中。一般来说,只有在您有实质性内容添加时才应该向像这样的非常老的问题添加答案。 - Andrew Barber你可以尝试以下方法:
preg_match('/^[a-zA-Z]$/',$input_char);