PHP Conference Japan 2024

IntlChar::tolower

(PHP 7, PHP 8)

IntlChar::tolower將 Unicode 字元轉換為小寫

說明

public static IntlChar::tolower(int|string $codepoint): int|string|null

將給定的字元映射到其小寫等效字元。如果該字元沒有小寫等效字元,則返回原始字元本身。

參數

codepoint

int 字碼點值(例如,U+2603 雪人0x2603),或編碼為 UTF-8 string 的字元(例如 "\u{2603}"

回傳值

如果存在,則返回程式碼點的簡易小寫對應;否則返回程式碼點本身。失敗時返回 null

返回類型為 int,除非程式碼點是以 UTF-8 字串 傳遞的,在這種情況下,會返回 字串。失敗時返回 null

範例

範例 #1 測試不同的程式碼點

<?php
var_dump
(IntlChar::tolower("A"));
var_dump(IntlChar::tolower("a"));
var_dump(IntlChar::tolower("Φ"));
var_dump(IntlChar::tolower("φ"));
var_dump(IntlChar::tolower("1"));
var_dump(IntlChar::tolower(ord("A")));
var_dump(IntlChar::tolower(ord("a")));
?>

上述範例將輸出:

string(1) "a"
string(1) "a"
string(2) "φ"
string(2) "φ"
string(1) "1"
int(97)
int(97)

另請參閱

新增註釋

使用者貢獻的註釋 1 則註釋

Patanjali
4 年前
我寫的另一個用來取代 mb_strtolower 的函式可能無法正常運作,因為它錯誤地將字素視為程式碼點。

tolower 與許多 IntlChar 方法一樣,專門用於程式碼點,因此需要程式碼點迭代器來隔離每個程式碼點。

此外,由於在 tolower 中,如果程式碼點沒有小寫版本,則會返回提供的程式碼點,因此無需在轉換前特別測試字母程式碼點。

<?php
函數 u_tolower($text=''){
// 如果為空,則返回空(不浪費 CPU 週期)
if($text==''){return'';}

// 建立程式碼點斷點迭代器以識別每個程式碼點的起始位置
$iterator=IntlBreakIterator::createCodePointInstance();

// 載入文字
$iterator->setText($text);

// 使用部件迭代器來提取每個程式碼點本身,轉換並將其附加到新字串
$newtext='';
foreach(
$iterator->getPartsIterator() as $codepoint){$newtext.=IntlChar::tolower($codepoint);}

// 返回已轉換的文字
return $newtext;
}
?>
To Top