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 SNOWMAN0x2603),或编码为UTF-8 string 的字符(例如 "\u{2603}"

返回值

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

除非代码点作为 UTF-8 string 传递,否则返回类型为 int,在这种情况下返回 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 条注释

0
Patanjali
4 年前
我编写的用于替换 mb_strtolower 的其他函数可能无法正常工作,因为它错误地将字素与代码点等同起来。

tolower,像许多 IntlChar 方法一样,专门处理代码点,因此需要代码点迭代器来隔离每个代码点。

此外,由于在 tolower 中,如果代码点没有小写版本,则返回提供的代码点,因此无需在转换之前专门测试字母代码点。

<?php
function u_tolower($text=''){
// 如果为空,则返回空(不浪费 CPU 周期)
if($text==''){return'';}

// 创建代码点断点迭代器以识别每个代码点的开头
$iterator=IntlBreakIterator::createCodePointInstance();

// 加载文本
$iterator->setText($text);

// 使用 parts 迭代器提取每个代码点本身,转换并将它附加到新字符串
$newtext='';
foreach(
$iterator->getPartsIterator() as $codepoint){$newtext.=IntlChar::tolower($codepoint);}

// 返回转换后的文本
return $newtext;
}
?>
To Top