CakeFest 2024: The Official CakePHP Conference

IntlChar::tolower

(PHP 7, PHP 8)

IntlChar::tolowerПреобразовывает символ Unicode в нижний регистр

Описание

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

Преобразовывает символ в его эквивалент в нижнем регистре. Если такового нет, то возвращается исходный символ.

Список параметров

codepoint

Целочисленное (int) значение кодовой точки (например, 0x2603 для символа U+2603 СНЕГОВИК), или символ в виде строки (string) в кодировке UTF-8 (например "\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)

Смотрите также

  • IntlChar::totitle() - Преобразовывает символ Unicode в титульный регистр (titlecase)
  • IntlChar::toupper() - Преобразовывает символ Unicode в верхний регистр
  • mb_strtolower() - Приводит строку к нижнему регистру

add a note

User Contributed Notes 1 note

up
0
Patanjali
3 years ago
The other function I wrote to replace mb_strtolower may not work properly, as it erroneously equated graphemes with codepoints.

tolower, like many IntlChar methods, works specifically on codepoints, so requires a codepoint iterator to isolate each.

Also, because in tolower, if there is no lowercase version of the codepoint, the supplied one is returned, so there is no need to specially test for alphabetic codepoints before conversion.

<?php
function u_tolower($text=''){
// if blank, return blank (don't waste CPU cycles)
if($text==''){return'';}

// create the codepoint break iterator to identify the start of each codepoint
$iterator=IntlBreakIterator::createCodePointInstance();

// load the text
$iterator->setText($text);

// using a parts iterator to extract each codepoint itself, convert and append it to the new string
$newtext='';
foreach(
$iterator->getPartsIterator() as $codepoint){$newtext.=IntlChar::tolower($codepoint);}

// return converted text
return $newtext;
}
?>
To Top