Obtenir le dernier caractère d'une chaîne en PHP : 5 méthodes éprouvées

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Comment obtenir le dernier caractère d'une chaîne en PHP : guide complet pour débutants et experts

\n\n

Imaginez la situation : vous écrivez un script qui doit vérifier si un email se termine par @gmail.com, ou vous devez extraire la dernière lettre d'un nom d'utilisateur. Une tâche apparemment élémentaire — récupérer le dernier caractère d'une chaîne en PHP. Mais attention ! Même dans une question aussi simple, de nombreux pièges se cachent, surtout lorsqu'il s'agit de caractères accentués, d'emojis ou de symboles spéciaux.

\n\n

Selon Stack Overflow, la question "How to get the last char of a string in PHP?" cumule des milliers de vues chaque mois. Et ce n'est pas un hasard : les débutants butent souvent sur substr() avec des indices négatifs, tandis que les développeurs expérimentés débattent des performances et de la gestion correcte de l'UTF-8.

\n\n

Dans cet article, nous allons détailler 5 méthodes fonctionnelles, montrer des exemples de code concrets et vous donner des recommandations claires. C'est parti !

\n\n

Méthode n°1 : La classique — substr() avec un indice négatif

\n\n

La méthode la plus populaire et la plus concise. La fonction substr() accepte une valeur de longueur négative pour compter les caractères depuis la fin de la chaîne.

\n\n
<?php\n$string = "Bonjour le monde !";\n$lastChar = substr($string, -1);\necho $lastChar; // Affiche : !\n?>
\n\n

Avantages :

\n
    \n
  • Court et clair
  • \n
  • Rapide à exécuter
  • \n
\n\n

Inconvénients :

\n
    \n
  • Ne gère pas les encodages multioctets (accents, caractères chinois)
  • \n
  • Peut renvoyer un caractère "cassé" pour les chaînes UTF-8
  • \n
\n\n

Exemple de problème avec les accents :

\n\n
<?php\n$string = "Été";\n$lastChar = substr($string, -1);\necho $lastChar; // Affiche : � (point d'interrogation dans un losange)\n?>
\n\n

Pourquoi ? Parce que les lettres accentuées occupent 2 octets en UTF-8, alors que substr() travaille avec des octets, pas des caractères. Pour le texte en anglais, cette méthode est parfaite, mais pour les projets multilingues, elle ne convient pas.

\n\n

Méthode n°2 : La bonne pratique — mb_substr() pour les chaînes multioctets

\n\n

Si votre projet utilise Unicode (ce qui est quasiment obligatoire aujourd'hui), utilisez mb_substr() de l'extension mbstring.

\n\n
<?php\n$string = "Bonjour le monde !";\n$lastChar = mb_substr($string, -1);\necho $lastChar; // Affiche : !\n?>
\n\n

Et maintenant, le plus intéressant — la gestion des emojis :

\n\n
<?php\n$string = "👋 Bonjour 🌍";\n$lastChar = mb_substr($string, -1);\necho $lastChar; // Affiche : 🌍\n?>
\n\n

Avantages :

\n
    \n
  • Gère correctement tous les encodages (UTF-8, UTF-16, etc.)
  • \n
  • Fonctionne avec les emojis et les symboles spéciaux
  • \n
\n\n

Inconvénients :

\n
    \n
  • Nécessite l'extension mbstring installée (présente sur presque tous les hébergements)
  • \n
  • Légèrement plus lent que substr()
  • \n
\n\n

Méthode n°3 : L'alternative — str_split() et end()

\n\n

Vous pouvez diviser la chaîne en un tableau de caractères et prendre le dernier élément. Cela semble élégant, mais il y a un détail.

\n\n
<?php\n$string = "PHP";\n$chars = str_split($string);\n$lastChar = end($chars);\necho $lastChar; // Affiche : P\n?>
\n\n

Attention : str_split() ne gère pas non plus les chaînes multioctets. Pour les accents, utilisez preg_split() avec le drapeau Unicode :

\n\n
<?php\n$string = "Code";\n$chars = preg_split('//u', $string, -1, PREG_SPLIT_NO_EMPTY);\n$lastChar = end($chars);\necho $lastChar; // Affiche : e\n?>
\n\n

Avantages :

\n
    \n
  • Code intuitif
  • \n
  • Permet d'obtenir facilement n'importe quel caractère, pas seulement le dernier
  • \n
\n\n

Inconvénients :

\n
    \n
  • Consommation mémoire excessive (création d'un tableau)
  • \n
  • Plus lent que les fonctions directes
  • \n
\n\n

Méthode n°4 : L'avancée — iconv_substr() pour les encodages spécifiques

Blogs

Book Recommendations