如何检查字符是字母还是数字?

Posted

技术标签:

【中文标题】如何检查字符是字母还是数字?【英文标题】:How can I check if a char is a letter or a number? 【发布时间】:2012-12-23 06:00:36 【问题描述】:

我有一个字符串,我想循环它,以便检查每个字符是字母还是数字。

$s = "rfewr545 345b";

for ($i=1; $i<=strlen($s); $i++)
   if ($a[$i-1] == is a letter)
      echo $a[$i-1]." is a letter";
    else 
      echo $a[$i-1]." is a number";
   

【问题讨论】:

是否可以对整个字符串使用正则表达式而不是遍历每个字符? 检查***.com/q/9721636/1169798和php.net/manual/en/function.is-numeric.php is_numeric() 应该可以检查数字。 【参考方案1】:

你可以使用:

ctype_digit

ctype_alpha

【讨论】:

还有 ctype_alnum($character),仅供参考。【参考方案2】:

要测试字符是否为is_numeric,请使用:

is_numeric($a[$i-1])

如下:

$s = "rfewr545 345b";
for ($i = 0; $i < strlen($s); $i++)
   $char = $s[$i];
   if (is_numeric($char)) 
      echo $char . ' is a number';
    else 
      echo $char . ' is a letter';
   

【讨论】:

不是每个不是数字的字符都是字母!! 多字节字符呢?【参考方案3】:

使用正则表达式,您可以尝试以下操作。

测试一个数字

if (preg_match('/\d/', $char)) :
     echo $char.' is a number';
endif;

测试“字母”

if (preg_match('/[a-zA-Z]/', $char)) :
     echo $char.' is a letter';
endif;

这种方法的好处主要来自“字母”测试,它可以让您有效地将构成的内容定义为“字母”字符。在这个例子中,基本的英文字母被定义为一个“字母”。

【讨论】:

preg_match('/^[a-zA-Z\s\,]+$/') 我相信 OP 指的是测试单个 letter 字符,而不是 words【参考方案4】:

看到这个: http://php.net/manual/en/function.is-numeric.php

if(Is_numeric($char)) 
//Do stuff

else 
//Do other stuff

【讨论】:

【参考方案5】:

您可以使用 is_numeric() 函数

if (is_numeric($a[$i-1]))
      echo $a[$i-1]." is a number";
    else 
      echo $a[$i-1]." is a letter";
   

【讨论】:

【参考方案6】:

php 提供了一些不错的功能来检查字符。使用 apt 函数作为 if 块中的条件。

访问:

PHP char functions

例如ctype_digit 如果数字是数字则返回 true。

【讨论】:

【参考方案7】:

您可以使用ctype_alpha 来检查字母字符。

同样,您可以使用ctype_digit 来检查数字字符。

is_numeric — 判断变量是数字还是数字字符串

is_numeric() 示例:

<?php

    $tests = array(
        "42",
        0b10100111001,
        "not numeric",
        array(),
        9.1
    );

    foreach ($tests as $element) 
        if (is_numeric($element)) 
            echo "'$element' is numeric", PHP_EOL;
         else 
            echo "'$element' is NOT numeric", PHP_EOL;
        
    
?>

上面的例子会输出:

'42' is numeric
'1337' is numeric
'not numeric' is NOT numeric
'Array' is NOT numeric
'9.1' is numeric

ctype_digit()is_numeric() 有何不同?

字符串与整数的比较示例:

<?php
    $numeric_string = '42';
    $integer        = 42;

    ctype_digit($numeric_string);  // true
    ctype_digit($integer);         // false (ASCII 42 is the * character)

    is_numeric($numeric_string);   // true
    is_numeric($integer);          // true

?>

【讨论】:

以上是关于如何检查字符是字母还是数字?的主要内容,如果未能解决你的问题,请参考以下文章

检查字符串中的一个字符是数字还是字母[Python] [关闭]

如何判断一个字符是数字还是字母

字符型怎么判断是否数字和字母?

检测Python字符串是数字还是字母[重复]

检查输入是数字还是字母javascript

确定 char 是数字还是字母