PHP 怎样判断一个字符是字母

最近更新时间 2020-12-15 14:10:03

有时,程序中需要判断一个字符是否是字母。可以使用正则表达式或者PHP内置函数判断。本篇只讲解判断一个字符而非字符串,所以以下示例中的输入参数都是一个字符。

以下函数只判断一个字符是否字母,如果输入的是字符串可能会有异常结果,最好在函数中进行字符长度的校验。

第一种 - 使用正则表达式判断是否为字母。

preg_match() 函数根据正则表达式返回匹配的次数,值为 0次(不匹配)或 1次,函数在第一次匹配后将停止搜索。

<?php
/**
 * PHP 怎样判断一个字符是字母
 *
 * @since Version 1.0.0
 * @filesource
 */

// 判断一个字符是否是字母
function is_alpha($char) {
  //判断字符长度,只处理一个字符
  if(mb_strlen($char) != 1) return 0;

  // 大写或小写字母
  $pattern = '/[A-Za-z]/';

  return preg_match($pattern, $char);
}

$char = 'P';
$retVal = is_alpha($char);
var_dump($retVal);
int(1)

第二种 - 使用 ctype_alpha() 函数判断是否为字母。

ctype_alpha() 函数输入的所有字符都是字母([A-Za-z])则返回 true 否则返回 false。函数等同于(ctype_upper($text) || ctype_lower($text))

<?php
/**
 * PHP 怎样判断一个字符是字母
 *
 * @since Version 1.0.0
 * @filesource
 */

// 判断一个字符是否是字母
function is_alpha($char) {
  //判断字符长度,只处理一个字符
  if(mb_strlen($char) != 1) return false;

  // return (ctype_upper($char) || ctype_lower($char));
  return ctype_alpha($char);
}

$char = 'P';
$retVal = is_alpha($char);
var_dump($retVal);
bool(true)

第三种 - 通过字符的 ASCII 编码判断。

使用 ord() 函数获取字符的 ASCII 编码,再根据编码值大小进行判断。

ASCII 编码值
  • A-Z:65-90
  • a-z:97-122
  • 0-9:48-57
<?php
/**
 * PHP 怎样判断一个字符是字母
 *
 * @since Version 1.0.0
 * @filesource
 */

// 判断一个字符是否是字母
function is_alpha($char) {
  //判断字符长度,只处理一个字符
  if(mb_strlen($char) != 1) return false;

  // 返回 ASCII 编码
  $ord = ord($char);
  
  return (65<=$ord && $ord<=90 || 97<=$ord && $ord<=122);
}

$char = 'a';
$retVal = is_alpha($char);
var_dump($retVal);
bool(true)
rss_feed