首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 判斷字符大小寫的三種方法

     編輯:PHP 相關知識

需求場景

統計字符串中大小寫字母數量、驗證密碼複雜度、解析特定格式代碼等,均需判斷字符大小寫。本文介紹三種不同思路的實現。

方法一:正則表達式匹配(針對整字符串)

使用 preg_match 檢測字符串是否全為大寫/小寫字母。

<?php
function checkCaseRegex($str) {
    if (preg_match('/^[a-z]+$/', $str)) {
        return '全小寫字母';
    } elseif (preg_match('/^[A-Z]+$/', $str)) {
        return '全大寫字母';
    } elseif (preg_match('/^[a-zA-Z]+$/', $str)) {
        return '混合大小寫字母';
    } else {
        return '包含非字母字符';
    }
}

echo checkCaseRegex('hello');   // 全小寫字母
echo checkCaseRegex('WORLD');   // 全大寫字母
echo checkCaseRegex('Hello');   // 混合大小寫字母
echo checkCaseRegex('Hi123');   // 包含非字母字符
?>

缺點: 僅能判斷整體屬性,無法逐字符統計。

方法二:ASCII 碼比較(逐字符檢測)

利用 ord() 獲取 ASCII 值:大寫 A-Z (65-90),小寫 a-z (97-122)。

<?php
function checkCaseAscii($char) {
    $ascii = ord($char);
    if ($ascii >= 65 && $ascii <= 90) return '大寫字母';
    if ($ascii >= 97 && $ascii <= 122) return '小寫字母';
    return '非字母';
}

// 統計字符串中大小寫數量
function countCase($str) {
    $upper = $lower = 0;
    for ($i = 0; $i < strlen($str); $i++) {
        $c = $str[$i];
        if (ord($c) >= 65 && ord($c) <= 90) $upper++;
        elseif (ord($c) >= 97 && ord($c) <= 122) $lower++;
    }
    return ['upper' => $upper, 'lower' => $lower];
}

print_r(countCase('Hello World')); // Array ( [upper] => 2 [lower] => 8 )
?>

方法三:內置函數比較(最簡潔)

使用 strtoupper() / strtolower() 與原字符比較。

<?php
function checkCaseBuiltin($char) {
    if ($char === strtoupper($char) && $char !== strtolower($char)) return '大寫字母';
    if ($char === strtolower($char) && $char !== strtoupper($char)) return '小寫字母';
    return '非字母或非字母字符';
}

// 批量檢測
$str = 'PHP 8.2';
for ($i = 0; $i < strlen($str); $i++) {
    echo $str[$i] . ' => ' . checkCaseBuiltin($str[$i]) . "\n";
}
/*
P => 大寫字母
H => 大寫字母
P => 大寫字母
  => 非字母或非字母字符
8 => 非字母或非字母字符
. => 非字母或非字母字符
2 => 非字母或非字母字符
*/
?>

性能與適用性對比

方法性能適用場景
正則較慢整體格式驗證(如用戶名規則)
ASCII最快大量字符逐個統計、底層解析
內置函數中等代碼可讀性優先、多字節字符兼容性較好

總結

根據具體需求選擇:整體驗證用正則,高性能統計用 ASCII,通用邏輯用內置函數。注意多字節字符(中文等)需配合 mb_ 系列函數處理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved