PHP 8.4.0 RC2 available for testing

IntlChar::tolower

(PHP 7, PHP 8)

IntlChar::tolowerRend un caractère Unicode en minuscule

Description

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

Le caractère donné est mappé à son équivalent en minuscule. Si le caractère n'a pas d'équivalent en minuscule, le caractère original est retourné.

Liste de paramètres

codepoint

La valeur codepoint de type entier (i.e. 0x2603 pour U+2603 SNOWMAN), ou le caractère encodé en UTF-8 de type chaîne de caractères (i.e. "\u{2603}")

Valeurs de retour

Renvoie le Simple_Lowercase_Mapping du point de code, si disponible ; sinon le point de code lui-même. Renvoie null en cas d'échec.

Le type retourné sera entier tant que le codepoint a été passé en une chaîne de type chaîne de caractères encodée en UTF-8, auquel cas, une chaîne de caractères est retournée. En cas d'échec, retourne null.

Exemples

Exemple #1 Test de différents codepoint

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

L'exemple ci-dessus va afficher :

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

Voir aussi

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