Lorsque je conçois un site dynamique, je suis souvent tenté de réinventer la roue pour ajouter des fonctionnalités. Des coups d’oeil jetés par dessus l’épaule de certains amis, collègues, anciens devs et autres m’ont prouvé que je n’étais pas le seul.
Pour le bien de l’Humanité ( sisi ), je vous offre sur un plateau quelques fonctions méconnues, et pourtant extremement utiles :

urldecode() : Unescape en PHP

Une chaine préparée pour une URL via Javascript, avec par exemple la fonction escape(), doit être impérativement décodée avant traitement.
Certains sont tentés de réinventer la fonction Javascript unescape() en php, alors qu’elle existe déjà sous un autre nom : urldecode();

$chaine = 'Cha%C3%AEne';
echo urldecode($chaine); // Affichera "Chaîne"

Impeccable non ?

ctype_*() : Ne pas utiliser les REGEX à tout va.

Admettons que vous attendiez une chaine de caracteres comprise entre « A » et « Z ». Vous devez évidemment vérifier son type, sinon l’univers peut s’écrouler à tout moment ( j’insiste ). Fébrilement, vous commencez à rédiger :

if(preg_match('#^([a-z]+)$#',$chaine)) {
...

Disons le franchement, l’univers a eu le temps de s’écrouler 15 fois entre temps 🙂
Je vous présente donc les fonctions ctype !
Pour remplacer notre vieille fonction, utilisons donc la liste suivante :

  • ctype_alnum — Vérifie qu’une chaîne est alphanumérique
  • ctype_alpha — Vérifie qu’une chaîne est alphabétique
  • ctype_cntrl — Vérifie qu’un caractère est un caractère de contrôle
  • ctype_digit — Vérifie qu’une chaîne est un entier
  • ctype_graph — Vérifie qu’une chaîne est imprimable
  • ctype_lower — Vérifie qu’une chaîne est en minuscules
  • ctype_print — Vérifie qu’une chaîne est imprimable
  • ctype_punct — Vérifie qu’une chaîne contient de la ponctuation
  • ctype_space — Vérifie qu’une chaîne n’est faite que de caractères blancs
  • ctype_upper — Vérifie qu’une chaîne est en majuscules
  • ctype_xdigit — Vérifie qu’un caractère représente un nombre hexadécimal

Pour remplacer notre preg_match, nous pouvons ainsi utiliser :

if(ctype_alpha($chaine)) {
...

Plus clair, non ?

Pour les perfectionnistes, non, ce ne sont pas deux fonctions, mais plutôt deux types de fonctions 😉

Tags : ,