IntlChar::tolower

(PHP 7, PHP 8)

IntlChar::tolower将 Unicode 字符转换为小写

说明

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

将给定字符映射到其小写等价物。如果字符没有小写等价物,则返回原始字符本身。

参数

codepoint

int 代码点值(例如,U+2603 SNOWMAN0x2603),或作为 UTF-8 string 编码的字符(例如,"\u{2603}"

返回值

返回代码点的 Simple_Lowercase_Mapping,如果有;否则返回代码点本身。如果失败,则返回 null

返回类型为 int,除非代码点作为 UTF-8 string 传递,在这种情况下会返回 string。如果失败,则返回 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
function 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