W3docs

is_string()

La fonction is_string() est une fonction PHP intégrée qui vérifie si une variable est de type string ou non.

Introduction

is_string() est une fonction PHP intégrée qui vous indique si une valeur est de type string. Un string est un type de données qui contient une séquence de caractères, comme "hello" ou "42".

Étant donné que PHP est faiblement typé, le type d'une valeur dépend souvent de sa provenance — un formulaire, une base de données, un payload JSON ou la valeur de retour d'une fonction. is_string() vous permet de confirmer qu'une valeur est bien un string avant d'appeler des opérations réservées aux strings (comme strtoupper() ou substr()), afin d'éviter les erreurs de type et les résultats inattendus.

Cette page couvre la syntaxe, ce que is_string() retourne pour chaque type PHP, le piège classique des « chaînes numériques », et comment elle se distingue des fonctions apparentées comme is_numeric() et gettype().

Syntaxe

is_string(mixed $value): bool
  • $value — la variable ou l'expression à tester.
  • Retournetrue si $value est un string, false pour tout autre type.

is_string() vérifie le type, pas le contenu. Elle n'inspecte qu'une seule valeur à la fois et ne la convertit jamais.

Exemple de base

php— editable, runs on the server

$var1 est un string, donc is_string() retourne true ; $var2 est un float, donc elle retourne false.

Conseil : Utilisez var_dump() plutôt que echo pour tester des résultats booléens. echo true affiche 1, mais echo false n'affiche absolument rien — ce qui rend un résultat false facile à manquer. var_dump() affiche explicitement bool(true) / bool(false).

Ce que is_string() retourne pour chaque type

Seuls les vrais strings passent la vérification — les nombres, les booléens, null et les arrays retournent tous false, même quand ils ressemblent à des strings.

<?php
var_dump(is_string("hello"));      // bool(true)
var_dump(is_string("42"));         // bool(true)  — a digit string is still a string
var_dump(is_string(42));           // bool(false) — integer
var_dump(is_string(3.14));         // bool(false) — float
var_dump(is_string(true));         // bool(false) — boolean
var_dump(is_string(null));         // bool(false) — null
var_dump(is_string(['a', 'b']));   // bool(false) — array
?>

L'essentiel à retenir : is_string("42") est true. Les guillemets en font un string de chiffres, pas un nombre.

Utilisation pratique : garde avant les opérations sur les strings

Une utilisation typique consiste à valider une valeur avant d'appliquer des fonctions de string, afin qu'une entrée non fiable ou de type mixte ne puisse pas déclencher une TypeError.

<?php
function shout($value): string {
    if (!is_string($value)) {
        return "Not a string";
    }
    return strtoupper($value) . "!";
}

echo shout("hello") . "\n"; // HELLO!
echo shout(123) . "\n";     // Not a string
?>

is_string() vs. is_numeric()

Ces deux fonctions sont souvent confondues car les chaînes numériques se trouvent entre les deux. is_string() demande « est-ce de type string ? », tandis que is_numeric() demande « cette valeur représente-t-elle un nombre ? » — et une chaîne numérique répond oui aux deux.

<?php
$value = "42";

var_dump(is_string($value));  // bool(true)  — it IS a string
var_dump(is_numeric($value)); // bool(true)  — and it looks like a number
?>

Si vous avez besoin d'un type entier ou float plutôt qu'un string, utilisez is_int() ou is_float(). Pour convertir une valeur en string plutôt que de simplement la vérifier, consultez settype() ou strval().

Conclusion

is_string() est une vérification de type simple et fiable : elle retourne true uniquement pour les valeurs genuinement de type string et false pour tout le reste. Faites-y appel chaque fois que vous devez vous assurer qu'une valeur est un string avant d'appliquer des opérations sur les strings — par exemple lors du traitement de saisies utilisateur, de réponses API ou de données dont le type n'est pas garanti. Rappelez-vous les deux pièges : un nombre entre guillemets comme "42" est un string, et vous devriez inspecter les résultats avec var_dump() plutôt qu'avec echo pour qu'un false ne disparaisse pas. Pour des vérifications connexes, explorez is_numeric(), is_int(), is_array() et gettype().

Pratique

Pratique
Lesquelles des affirmations suivantes concernant 'is_string' en PHP sont vraies ?
Lesquelles des affirmations suivantes concernant 'is_string' en PHP sont vraies ?
Was this page helpful?