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