Vous voulez savoir quelles sont les fonctions du langage php les plus utilisées et qui reviennent sans cesse dans les projets ?
PHP possède plus de 5000 fonctions natives. Mais dans la vraie vie, les développeurs en utilisent un petit groupe très souvent.
Cet article se base sur l’analyse de 2500 projets PHP open source et sur mon expérience. Mais surtout, le temps que j’ai perdu à vouloir connaitre le plus de fonctions possible.
On va découvrir ensemble les fonctions qui font tourner le web. N’oubliez pas de commenter votre code comme il faut. C’est probablement le calvaire de tous les développeurs devant relire le code d’un junior, il y souvent trop de commentaires ou juste aucun .
🏆 Les fonctions php les plus utilisées: le Top 10 absolu
Voici les 10 fonctions les plus utilisées tous domaines confondus :
file_exists()– 63%str_replace()– 58%implode()– 57%count()– 56%dirname()– 56%substr()– 56%sprintf()– 55%strpos()– 55%array_merge()– 55%in_array()– 51%
Ces 10 fonctions apparaissent dans plus de la moitié de tous les projets PHP.
Répartition par catégorie :
- Chaînes de caractères : 40%
- Tableaux : 35%
- Fichiers : 15%
- Autres : 10%
Table des matières
📝 Manipulation de chaînes
Les fonctions manipulant une chaine de caractères sont les plus utilisées en PHP. Elles apparaissent dans plus de la moitié des projets.Elles peuvent être utiles quand on veut retirer des guillemets, supprimer des extensions, modifier le nom du fichier , renommer des répertoires.
str_replace() – Le champion
Fréquence : 58% | Usage moyen : 33 fois par projet
Cette fonction remplace une chaine de caractères par une autre dans un texte.
$message = "Votre commande est en attente";
$messageActif = str_replace("attente", "traitement", $message);
// "Votre commande est en traitement"
// Remplacer plusieurs valeurs
$prix = "Prix: 99,99€";
$prixUS = str_replace([",", "€"], [".", "$"], $prix);
// "Prix: 99.99$"
substr() – Découper une chaîne de caractères
Fréquence : 56% | Usage moyen : 53 fois par projet
On va spécifier la place du premier caractère puis le nombre de caractères consécutifs à garder dans un extrait de texte.
$reference = "CMD-2024-12345";
$annee = substr($reference, 4, 4); // "2024"
$numero = substr($reference, 9); // "12345"
$prefixe = substr($reference, 0, 3); // "CMD"
explode() et implode() – Le duo gagnant
Fréquence : 51% et 57%
explode() divise un texte en morceaux séparés par une virgule.Explode est souvent utilisé lors de l’importation de tous types de fichiers des fichiers pdf ou Jpeg. On va désolidariser le nom du fichier de son extension, et on aura par exemple « mon fichier » et « jpeg ».
implode() fait l’inverse : elle colle les morceaux ensemble et retourne une chaine de caractère complète.
// Diviser un nom complet
$nomComplet = "Jean Paul Dupont";
$parties = explode(" ", $nomComplet);
// ["Jean", "Paul", "Dupont"]
// Créer une liste pour affichage
$categories = ["Sport", "Tech", "Cuisine"];
$affichage = implode(" | ", $categories);
// "Sport | Tech | Cuisine"
trim() – Nettoyer les espaces
Fréquence : 42%
Cette fonction enlève les espaces au début et à la fin d’un texte.
$email = " contact@site.fr ";
$emailPropre = trim($email);
// "contact@site.fr"
// Nettoyer un formulaire
$nom = trim($_POST['nom']);
$prenom = trim($_POST['prenom']);
strpos() – Trouver un mot
Fréquence : 55%
Elle cherche la position d’un mot dans un texte.
$description = "Produit disponible en stock";
if (strpos($description, "disponible") !== false) {
echo "Article en vente";
}
// Vérifier une extension de fichier
$fichier = "document.pdf";
if (strpos($fichier, ".pdf") !== false) {
echo "C'est un PDF";
}
strlen() – Compter les caractères
Fréquence : 51%
Elle donne le nombre de caractères dans un texte.
$motDePasse = "MonMotDePasse123";
if (strlen($motDePasse) < 8) {
echo "Mot de passe trop court";
}
$tweet = "Ceci est un message";
$reste = 280 - strlen($tweet);
echo "Caractères restants : $reste";
strtolower() et strtoupper() – Changer la casse et retourne la chaine de caractères en minuscule ou majuscule selon le cas.
Fréquence : 39% et 27%
Elles convertissent un texte en minuscules ou majuscules.
// Normaliser pour comparaison
$saisie = "ADMIN";
if (strtolower($saisie) === "admin") {
echo "Accès administrateur";
}
// Créer un code promo
$code = strtoupper("noel2024");
echo $code; // "NOEL2024"
🗂️ Tableaux
Les tableaux stockent plusieurs valeurs. Ces fonctions sont dans plus de 50% des projets.
count() – Compter les éléments
Fréquence : 56% | Usage moyen : 61 fois par projet
Elle compte combien d’éléments il y a dans un tableau.
$panier = ["Livre", "Stylo", "Cahier"];
$total = count($panier);
echo "Vous avez $total articles"; // 3
// Vérifier si le panier est vide
if (count($panier) === 0) {
echo "Panier vide";
}
array_merge() – Fusionner des tableaux
Fréquence : 55%
Elle combine plusieurs tableaux en un seul.
$optionsBase = ["wifi" => true, "parking" => false];
$optionsPremium = ["spa" => true, "piscine" => true];
$toutesOptions = array_merge($optionsBase, $optionsPremium);
// ["wifi" => true, "parking" => false, "spa" => true, "piscine" => true]
in_array() – Chercher un élément
Fréquence : 51%
Elle vérifie si une valeur existe dans un tableau.
$rolesAutorises = ["admin", "editeur", "moderateur"];
$roleUtilisateur = "editeur";
if (in_array($roleUtilisateur, $rolesAutorises)) {
echo "Accès autorisé";
}
array_key_exists() – Vérifier une clé
Fréquence : 50%
Elle vérifie si une clé existe dans un tableau associatif (un tableau avec des clés nommées).
$utilisateur = ["nom" => "Martin", "age" => 35];
if (array_key_exists("telephone", $utilisateur)) {
$tel = $utilisateur["telephone"];
} else {
echo "Numéro non renseigné";
}
array_keys() et array_values() – Extraire
Fréquence : 49% et 43%
Elles extraient soit les clés, soit les valeurs d’un tableau.
$notes = ["maths" => 15, "francais" => 14, "anglais" => 16];
$matieres = array_keys($notes);
// ["maths", "francais", "anglais"]
$scores = array_values($notes);
// [15, 14, 16]
$moyenne = array_sum($scores) / count($scores);
array_map() – Transformer
Fréquence : 39%
Elle applique une fonction à chaque élément d’un tableau.
$prix = [10, 25, 50, 100];
$prixTTC = array_map(fn($p) => $p * 1.20, $prix);
// [12, 30, 60, 120]
$noms = ["jean", "marie", "paul"];
$nomsFormates = array_map('ucfirst', $noms);
// ["Jean", "Marie", "Paul"]
array_filter() – Filtrer
Fréquence : 35%
Elle garde seulement les éléments qui respectent une condition.
$ages = [15, 22, 17, 30, 12, 25];
$majeurs = array_filter($ages, fn($age) => $age >= 18);
// [22, 30, 25]
$produits = [
["nom" => "Livre", "stock" => 5],
["nom" => "Stylo", "stock" => 0],
["nom" => "Cahier", "stock" => 12]
];
$disponibles = array_filter($produits, fn($p) => $p["stock"] > 0);

📁 Fichiers et système
Ces fonctions gèrent les fichiers et dossiers sur le serveur.
file_exists() – Vérifier l’existence
Fréquence : 63% | La fonction la plus utilisée !
Elle vérifie si un fichier existe dans le répertoire courant, si le format de fichier correspond à ce que l’on recherche ou si le chemin d’accès jusqu’au dossier est le bon .
$cheminLogo = "assets/logo-entreprise.png";
if (file_exists($cheminLogo)) {
echo "<img src='$cheminLogo'>";
} else {
echo "<img src='assets/logo-defaut.png'>";
}
file_get_contents() – Lire un fichier
Fréquence : 46%
Elle lit tout le contenu du fichier d’un coup que l’extension : txt ,php ,csv par exemple.
$contenuJSON = file_get_contents("config/parametres.json");
$parametres = json_decode($contenuJSON, true);
// Lire une page web distante
$pageHTML = file_get_contents("https://api.exemple.com/donnees");
file_put_contents() – Écrire dans un fichier
Fréquence : 42%
On utilise ce type de script pour écrire du texte dans un fichier texte ou autre. Si le fichier n’existe pas, elle le crée sans que l’on est à le faire manuellement ou en passant par le terminal et la ligne de commande (shell).
$log = date("Y-m-d H:i:s") . " - Connexion utilisateur\n";
file_put_contents("logs/acces.log", $log, FILE_APPEND);
// Sauvegarder des données
$donnees = ["version" => "2.1", "actif" => true];
file_put_contents("cache.json", json_encode($donnees));
dirname() – Obtenir le dossier parent
Fréquence : 56%
Elle donne le chemin du dossier qui contient un fichier ou une liste de fichiers.Généralement, on verifie que l’on soit dans le bon répertoire avant de commencer à manipuler les fichiers texte ou autres
$cheminFichier = "/var/www/site/public/images/photo.jpg";
$dossierImages = dirname($cheminFichier);
// "/var/www/site/public/images"
// Remonter de plusieurs niveaux
$racine = dirname($cheminFichier, 3);
// "/var/www/site"
is_file() et is_dir() – Type de fichier
Fréquence : 44% et 39%
Elles vérifient si c’est un fichier ou un dossier.
$chemin = "uploads/documents";
if (is_dir($chemin)) {
echo "C'est un dossier";
$fichiers = scandir($chemin);
}
if (is_file($chemin)) {
echo "C'est un fichier";
$taille = filesize($chemin);
}
mkdir() – Créer un dossier
Fréquence : 29%
Elle crée un nouveau dossier.
$dossierClient = "storage/clients/CL-" . $clientId;
if (!file_exists($dossierClient)) {
mkdir($dossierClient, 0755, true);
}
unlink() – Supprimer un fichier
Fréquence : 30%
Elle efface un fichier du disque.
$anciennePhoto = "uploads/profil-ancien.jpg";
if (file_exists($anciennePhoto)) {
unlink($anciennePhoto);
}
🔍 Types et variables
PHP change le type des variables tout seul. Ces fonctions vérifient de quel type est une variable.
is_array() – C’est un tableau ?
Fréquence : 51%
$reponse = $_GET['tags'];
if (is_array($reponse)) {
$tags = $reponse;
} else {
$tags = [$reponse];
}
is_string() – C’est du texte ?
Fréquence : 41%
function afficherMessage($contenu) {
if (is_string($contenu)) {
echo htmlspecialchars($contenu);
} else {
echo "Format invalide";
}
}
is_int() et is_numeric() – C’est un nombre ?
Fréquence : 28% et 27%
is_int() vérifie si c’est un nombre entier. is_numeric() vérifie si ça ressemble à un nombre (même en texte).
$quantite = $_POST['quantite'];
if (is_numeric($quantite) && $quantite > 0) {
$total = $prixUnitaire * (int)$quantite;
}
$compteur = 42;
is_int($compteur); // true
is_int("42"); // false
is_numeric("42"); // true
isset() – La variable existe ?
Elle vérifie si une variable a été créée et n’est pas null.
if (isset($_SESSION['user_id'])) {
$userId = $_SESSION['user_id'];
// Charger le profil
}
// Vérifier plusieurs variables
if (isset($nom, $prenom, $email)) {
// Traiter le formulaire
}
empty() – La variable est vide ?
Elle vérifie si une variable est vide (chaîne vide, 0, false, null, tableau vide).
$recherche = trim($_GET['q']);
if (!empty($recherche)) {
$resultats = rechercherProduits($recherche);
} else {
echo "Veuillez saisir un terme de recherche";
}
var_dump() et print_r() – Afficher pour déboguer
Elles affichent le contenu d’une variable pour voir ce qu’elle contient.
$commande = [
"id" => 12345,
"client" => "Martin",
"articles" => ["Livre", "Stylo"]
];
// Avec tous les détails
var_dump($commande);
// Plus lisible
print_r($commande);
// Dans les logs
error_log(print_r($commande, true));

📦 JSON et sérialisation
JSON est le format standard pour échanger des données entre le serveur et le navigateur.
json_encode() – Convertir en JSON
Fréquence : 33%
Elle transforme un tableau PHP en texte JSON.
$reponse = [
"statut" => "succes",
"message" => "Données enregistrées",
"timestamp" => time()
];
header("Content-Type: application/json");
echo json_encode($reponse);
// {"statut":"succes","message":"Données enregistrées","timestamp":1704549600}
json_decode() – Lire du JSON
Fréquence : 35%
Elle transforme du texte JSON en tableau PHP.
$donneesJSON = file_get_contents("config/options.json");
$options = json_decode($donneesJSON, true);
$theme = $options['theme'];
$langue = $options['langue'];
// Depuis une API
$apiReponse = file_get_contents("https://api.meteo.com/ville/paris");
$meteo = json_decode($apiReponse, true);
$temperature = $meteo['temperature'];
Important : Le deuxième paramètre true transforme l’objet en tableau associatif.
Vérifier les erreurs JSON
$donnees = json_encode($tableau);
if (json_last_error() !== JSON_ERROR_NONE) {
error_log("Erreur JSON : " . json_last_error_msg());
$donnees = "{}";
}
🔐 Sécurité
La sécurité n’est pas optionnelle. Ces fonctions protègent votre site.
password_hash() et password_verify() – Mots de passe sécurisés
Ne stockez jamais les mots de passe en clair dans votre base de données !
// Lors de l'inscription
$motDePasseSaisi = $_POST['password'];
$hashSecurise = password_hash($motDePasseSaisi, PASSWORD_DEFAULT);
// Stocker $hashSecurise dans la base de données
$db->query("INSERT INTO users (email, password) VALUES (?, ?)",
[$email, $hashSecurise]);
// Lors de la connexion
$hashStocke = $db->query("SELECT password FROM users WHERE email = ?", [$email]);
if (password_verify($motDePasseSaisi, $hashStocke)) {
$_SESSION['connecte'] = true;
} else {
echo "Identifiants incorrects";
}
htmlspecialchars() – Protection contre les attaques XSS
Elle transforme les caractères spéciaux et balises HTML ainsi que les guillemets pour empêcher l’injection de code.
$commentaire = $_POST['commentaire'];
$commentaireSecurise = htmlspecialchars($commentaire, ENT_QUOTES, 'UTF-8');
echo "<div class='commentaire'>";
echo "<p>$commentaireSecurise</p>";
echo "</div>";
// Pour un attribut HTML
$titre = htmlspecialchars($produit['nom'], ENT_QUOTES, 'UTF-8');
echo "<img alt='$titre' src='photo.jpg'>";
XSS = Cross-Site Scripting. C’est quand un pirate injecte du code malveillant dans votre page.
filter_var() – Valider et nettoyer
Fréquence : 36%
Elle valide et nettoie les données utilisateur.
// Valider un email
$emailSaisi = $_POST["contact_email"];
$email = filter_var($emailSaisi, FILTER_VALIDATE_EMAIL);
if ($email === false) {
$erreurs[] = "Adresse email invalide";
}
// Valider une URL
$siteweb = filter_var($_POST["url"], FILTER_VALIDATE_URL);
// Nettoyer un nombre
$age = filter_var($_POST["age"], FILTER_SANITIZE_NUMBER_INT);
md5() – À éviter pour les mots de passe !
Fréquence : 23%
MD5 est bon pour identifier des fichiers. Mais c’est trop faible pour protéger des mots de passe.
// OK pour identifier un fichier uploadé
$fichierTemporaire = $_FILES['document']['tmp_name'];
$identifiant = md5_file($fichierTemporaire);
$nouveauNom = $identifiant . ".pdf";
// MAUVAIS pour un mot de passe
// $hash = md5($password); // NON !
// Utilisez password_hash() !
📅 Date et heure
Ces fonctions gèrent les dates et le temps.
time() – Timestamp actuel
Fréquence : 23%
Elle donne le nombre de secondes depuis le 1er janvier 1970. C’est ce qu’on appelle un timestamp.
$maintenant = time();
// Calculer une expiration (24h)
$expiration = $maintenant + (24 * 60 * 60);
// Vérifier si un délai est dépassé
$datePublication = 1704470400;
if (time() > $datePublication) {
echo "Article publié";
}
date() – Formater une date
Elle transforme un timestamp en date lisible.
$aujourd hui = date("d/m/Y");
// "06/01/2026"
$heureActuelle = date("H:i");
// "14:30"
// Format pour base de données
$dateSQL = date("Y-m-d H:i:s");
// "2026-01-06 14:30:45"
// Formater une date spécifique
$dateCommande = 1704470400;
echo date("d F Y", $dateCommande);
// "06 janvier 2026"
strtotime() – Convertir du texte en timestamp
Elle comprend le langage naturel.
$dansSemaine = strtotime("+7 days");
$hierTimestamp = strtotime("yesterday");
$finAnnee = strtotime("2026-12-31");
// Calculer un délai
$dateDebut = strtotime("2026-01-01");
$dateFin = strtotime("2026-01-31");
$duree = ($dateFin - $dateDebut) / (60 * 60 * 24);
echo "$duree jours";
DateTime – Approche moderne
La classe DateTime est plus facile à utiliser pour les calculs complexes.
$reservation = new DateTime("2026-03-15");
$reservation->modify("+3 months");
echo $reservation->format("d/m/Y");
// "15/06/2026"
// Calculer un délai de livraison
$commande = new DateTime();
$livraison = clone $commande;
$livraison->modify("+5 business days");
// Différence entre deux dates
$debut = new DateTime("2026-01-01");
$fin = new DateTime("2026-06-30");
$intervalle = $debut->diff($fin);
echo $intervalle->days . " jours";
echo $intervalle->m . " mois";
🌐 HTTP et réseau
Ces fonctions gèrent les échanges entre le serveur et le navigateur.
header() – Envoyer des en-têtes HTTP
Fréquence : 34%
Les en-têtes HTTP sont des informations envoyées avant le contenu de la page.
// Rediriger après inscription
if ($inscriptionReussie) {
header("Location: /bienvenue");
exit;
}
// Forcer le téléchargement d'un fichier
header("Content-Type: application/pdf");
header("Content-Disposition: attachment; filename=facture.pdf");
readfile($cheminFacture);
// API REST
header("Content-Type: application/json");
header("Access-Control-Allow-Origin: *");
echo json_encode($donnees);
parse_url() – Découper une URL
Fréquence : 22%
Elle sépare une URL en morceaux.
$lien = "https://boutique.fr/produits/chaussures?taille=42&couleur=noir#avis";
$elements = parse_url($lien);
$domaine = $elements['host']; // "boutique.fr"
$chemin = $elements['path']; // "/produits/chaussures"
$parametres = $elements['query']; // "taille=42&couleur=noir"
// Extraire les paramètres
parse_str($elements['query'], $params);
$taille = $params['taille']; // "42"
$couleur = $params['couleur']; // "noir"
http_response_code() – Code de réponse
Elle définit ou récupère le code de réponse HTTP (200, 404, 500, etc.).
// Page introuvable
if (!$article) {
http_response_code(404);
include "404.php";
exit;
}
// Erreur serveur
if ($erreurBDD) {
http_response_code(500);
echo "Erreur technique";
}
// Création réussie (API)
http_response_code(201);
echo json_encode(["id" => $nouvelId]);
✅ Bonnes pratiques
1. Vérifier les retours de fonction
Certaines fonctions retournent false en cas d’erreur.
$configuration = file_get_contents("parametres.json");
if ($configuration === false) {
error_log("Impossible de charger la configuration");
$configuration = "{}"; // Valeur par défaut
}
2. Utiliser la comparaison stricte
Le triple égal === vérifie la valeur ET le type, alors que le double == ne vérifie que la valeur.
// MAUVAIS - peut donner des résultats inattendus
if (strpos($texte, "admin") == false) {
// Ne marche pas si "admin" est en position 0 !
}
// BON - comparaison stricte
if (strpos($texte, "admin") === false) {
echo "Mot non trouvé";
}
3. Ne jamais faire confiance aux données utilisateur
Toutes les données qui viennent de l’extérieur doivent être vérifiées.
// Nettoyer et valider
$emailClient = trim($_POST["email"]);
$emailValide = filter_var($emailClient, FILTER_VALIDATE_EMAIL);
if ($emailValide === false) {
$erreurs[] = "Email incorrect";
}
// Échapper avant affichage
$prenomAffiche = htmlspecialchars($prenom, ENT_QUOTES, 'UTF-8');
echo "<h1>Bienvenue $prenomAffiche</h1>";
4. Utiliser les fonctions modernes
PHP évolue. Certaines anciennes fonctions sont obsolètes.
// ANCIEN - Retiré depuis PHP 7
// mysql_connect()
// mysql_query()
// MODERNE - Plus sûr et plus rapide
$connexion = new PDO(
"mysql:host=localhost;dbname=boutique",
$utilisateur,
$motDePasse
);
5. Sécuriser les mots de passe
// MAUVAIS - Algorithmes faibles
// $hash = md5($motDePasse);
// $hash = sha1($motDePasse);
// BON - Algorithme moderne et sûr
$hash = password_hash($motDePasse, PASSWORD_DEFAULT);
// Vérification
if (password_verify($saisie, $hash)) {
echo "Accès autorisé";
}
Conclusion
Ces fonctions PHP sont les outils de base de tout développeur.
Vous n’avez pas besoin de toutes les mémoriser d’un coup. Concentrez-vous sur celles que vous utilisez le plus souvent.
Trois conseils pour progresser :
- Gardez la documentation PHP ouverte : php.net/manual
- Lisez du code existant pour voir comment les autres utilisent ces fonctions
- Pratiquez avec des petits projets
Les fonctions de manipulation de texte et de tableaux reviennent dans presque tous les projets. Commencez par là.
Avec ces bases solides, vous pouvez construire des applications PHP robustes et sécurisées.
Bon code ! 🚀
sources :