遇到问题。
假设我有一个由单个字符组成的参数,我只想接受字母字符。我如何确定传递的参数是拉丁字母的成员(a
- z
)?
顺便说一下我使用PHP Kohana 3。
感谢。
答案 0 :(得分:19)
http://php.net/manual/en/function.ctype-alpha.php
<?php
$ch = 'a';
if (ctype_alpha($ch)) {
// Accept
} else {
// Reject
}
如果正确设置,也会考虑区域设置。
编辑:要完成,其他海报似乎认为您需要确保参数是单个字符,否则参数无效。要检查字符串的长度,可以使用strlen()。如果strlen()
返回任何非1号码,那么您也可以拒绝该参数。
就目前而言,你回答时的问题表明你在某个地方有一个单一的角色参数,并且你想检查它是否按字母顺序排列。我提供了一个通用的解决方案来实现这一点,并且也是对语言环境友好的。
答案 1 :(得分:14)
在方法的顶部使用以下保护条款:
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...
}
答案 2 :(得分:2)
preg_match('/^[a-zA-Z]$/', $var_vhar);
方法将返回int值:for no match返回0,匹配返回1。
答案 3 :(得分:1)
您不能将[a-zA-Z]用于Unicode。
这是使用Unicode的示例,
if ( preg_match('/^\p{L}+$/u', 'my text') ) {
echo 'match';
} else {
echo 'not match';
}
答案 4 :(得分:0)
您可以尝试:
preg_match('/^[a-zA-Z]$/',$input_char);
如果$ input_char包含单个字母,则上述函数的返回值为true,否则为false。您可以适当地使用返回值。
答案 5 :(得分:0)
我建议使用ctype,因为它不仅比正则表达式更快,它甚至比PHP内置的大多数字符串函数更快。但你还需要确保它是一个单一字符:
if (ctype_alpha($ch) && strlen($ch) == 1) {
// Accept
} else {
// Reject
}
答案 6 :(得分:0)
这将有希望。这是一个简单的PHP函数,名为ctype_alpha
$mystring = 'a'
if (ctype_alpha($mystring))
{
//Then do the code here.
}