Le cas qui m'a occupé ces temps-ci est la mise en majuscule du E accent aigu (« é »). Je n'arrivais pas à obtenir de résultats pertinents avec une fonction comme stripos
dés que la chaîne scrutée contenait une lettre accentuée en majuscule. La fonction est incapable de retrouver la lettre correspondante en minuscule, comme l'illustre le test suivant.
class UpperLowerTest extends PHPUnit_Framework_TestCase
{
public static $lower = 'é';
public static $upper = 'É';
public function testStrToUpper()
{
$this->assertEquals(self::$upper, strtoupper(self::$lower), 'strtoupper');
// => ko
}
public function testStrToLower()
{
$this->assertEquals(self::$lower, strtolower(self::$upper), 'strtolower');
// => ko
}
public function testMbStrToUpper()
{
$this->assertEquals(self::$upper, mb_strtoupper(self::$lower), 'mb_strtoupper');
// => ok
}
public function testMbStrToLower()
{
$this->assertEquals(self::$lower, mb_strtolower(self::$upper), 'mb_strtolower');
// => ok
}
}
Il faut donc toujours passer par les « fonction multi-octets », mb_stripos
en l'occurrence. Ca va bien finir par rentrer cette histoire.
- Titre
- Multibyte String Functions
- Auteurs
- Achour MEHDI
- Auteurs
- Betz FRIEDHELM
- Auteurs
- Dovgal ANTONY
- Auteurs
- Lopes NUNO
- Auteurs
- Magnusson HANNES
- Auteurs
- Richter GEORG
- Auteurs
- Seguy DAMIEN
- Auteurs
- Vrana JAKUB
- Editeur
- PHP.net
- Date