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

17
我有一个字符串,我想要循环它以便检查每个字符是否为字母或数字。
$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";
   }
}

我怎样检查一个字符是字母还是数字?


能否在整个字符串上使用正则表达式,而不是迭代每个字符? - Tobias Nilsson
请查看 https://dev59.com/_mHVa4cB1Zd3GeqPoJJl 和 http://php.net/manual/en/function.is-numeric.php。 - Sirko
is_numeric()应该能够检查数字。 - tradyblix
7个回答

23

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

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';
   }
}

14
并非所有非数字的字符都是字母! - m4t1t0
2
多字节字符怎么办? - Glavić

21

1
还有一个函数ctype_alnum($character),只是提供信息。 - Rauli Rajande

6

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

测试数字

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

测试一个“字母”

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

这种方法的好处主要来自于 "letter "测试,它可以让您高效地定义什么是 "字母" 字符。在这个例子中,基本英文字母被定义为 "letter"。

preg_match('/^[a-zA-Z\s,]+$/') - Arun Killu
我认为OP指的是测试单个“字母”字符,而不是“单词”。 - Boaz

1

1
您可以使用 is_numeric() 函数来实现。
if (is_numeric($a[$i-1])){
      echo $a[$i-1]." is a number";
   } else {
      echo $a[$i-1]." is a letter";
   }

0

你可以使用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

?>

0

PHP提供了一些很好的字符检查函数。在if块中使用适当的函数作为条件。

访问:

PHP字符函数

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接