Les fonctions php les plus utilisées

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 :

  1. file_exists() – 63%
  2. str_replace() – 58%
  3. implode() – 57%
  4. count() – 56%
  5. dirname() – 56%
  6. substr() – 56%
  7. sprintf() – 55%
  8. strpos() – 55%
  9. array_merge() – 55%
  10. 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);

Les fonctions php les plus utilisées
Les fonctions php les plus utilisées

📁 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);
}

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

fonctions php

📦 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 :

  1. Gardez la documentation PHP ouverte : php.net/manual
  2. Lisez du code existant pour voir comment les autres utilisent ces fonctions
  3. 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 :

Cours

Variables et types

Manipulation de chaînes

Tableaux

Fichiers et système

Sécurité, session et cookie