PHP Conference Nagoya 2025

IntlChar::tolower

(PHP 7, PHP 8)

IntlChar::tolowerMake Unicode character lowercase

Beschreibung

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

The given character is mapped to its lowercase equivalent. If the character has no lowercase equivalent, the original character itself is returned.

Parameter-Liste

codepoint

Ein Wert vom Typ int, der einen Codepoint darstellt (z. B. 0x2603 für U+2603 SNOWMAN) oder ein als UTF-8-String kodiertes Zeichen (z. B. "\u{2603}")

Rückgabewerte

Returns the Simple_Lowercase_Mapping of the code point, if any; otherwise the code point itself. Returns null on failure.

Der Rückgabetyp ist int, außer der Codepoint wurde als UTF-8-String übergeben, in welchem Fall ein String zurückgegeben wird. Bei einem Fehler wird null zurückgegeben.

Beispiele

Beispiel #1 Testen unterschiedlicher Codepoints

<?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")));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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

Siehe auch

add a note

User Contributed Notes 1 note

up
0
Patanjali
4 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