确定字符是否为字母

Ed.*_*Ed. 12 php validation

有这个问题.

假设我有一个由单个字符组成的参数,我只想接受字母字符.我如何确定传递的参数是拉丁字母(a- z)的成员?

顺便说一下我使用PHP Kohana 3.

谢谢.

Nic*_*sta 19

http://php.net/manual/en/function.ctype-alpha.php

<?php
    $ch = 'a';
    if (ctype_alpha($ch)) {
        // Accept
    } else {
        // Reject
    }
Run Code Online (Sandbox Code Playgroud)

如果正确设置,这也会考虑区域设置.

编辑:要完成,其他海报似乎认为您需要确保参数是单个字符,否则参数无效.要检查字符串的长度,可以使用strlen().如果strlen()返回任何非1号,那么您也可以拒绝该参数.

就目前而言,您回答时的问题表明您在某处有一个字符参数,并且您想要检查它是否按字母顺序排列.我提供了一个通用的解决方案来做到这一点,并且也是对语言环境友好的.

  • 我有不同的解释.我想这些要求需要澄清.让我们在明天早上的争论中与OP谈谈.:) (2认同)

Asa*_*aph 14

在方法的顶部使用以下保护条款:

if (!preg_match("/^[a-z]$/", $param)) {
    // throw an Exception...
}
Run Code Online (Sandbox Code Playgroud)

如果您也想允许大写字母,请相应地更改正则表达式:

if (!preg_match("/^[a-zA-Z]$/", $param)) {
    // throw an Exception...
}
Run Code Online (Sandbox Code Playgroud)

支持不区分大小写的另一种方法是使用/i大小写不敏感修饰符:

if (!preg_match("/^[a-z]$/i", $param)) {
    // throw an Exception...
}
Run Code Online (Sandbox Code Playgroud)

  • 正则表达式很好,但很多时候你使用一个,即使是微不足道的,你重新发明轮子并引入接触表面的bug.我更喜欢http://php.net/manual/en/book.ctype.php. (2认同)