is_string()
Функция is_string() в PHP проверяет, является ли переменная строкой. Узнайте синтаксис, возвращаемые значения и практические примеры использования.
Введение
is_string() — это встроенная функция PHP, которая определяет, имеет ли значение тип string. Строка — это тип данных, хранящий последовательность символов, например "hello" или "42".
Поскольку PHP является языком со слабой типизацией, тип значения нередко зависит от его источника — формы ввода, базы данных, JSON-ответа или возвращаемого значения функции. is_string() позволяет убедиться, что значение действительно является строкой до вызова операций, предназначенных только для строк (например, strtoupper() или substr()), что помогает избежать ошибок типов и неожиданных результатов.
На этой странице рассматривается синтаксис, результаты is_string() для каждого типа PHP, распространённая ловушка с «числовыми строками», а также отличия от связанных функций — is_numeric() и gettype().
Синтаксис
is_string(mixed $value): bool$value— переменная или выражение для проверки.- Возвращает —
true, если$valueявляется строкой,falseдля любого другого типа.
is_string() проверяет тип, а не содержимое. Функция всегда проверяет только одно значение за раз и никогда его не преобразует.
Базовый пример
$var1 является строкой, поэтому is_string() возвращает true; $var2 — это число с плавающей точкой, поэтому возвращается false.
Совет: Используйте
var_dump()вместоechoпри проверке булевых результатов.echo trueвыводит1, ноecho falseне выводит совсем ничего — это делает результатfalseлегко незаметным.var_dump()явно показываетbool(true)/bool(false).
Что возвращает is_string() для каждого типа
Проверку проходят только настоящие строки — числа, булевы значения, null и массивы возвращают false, даже если они выглядят как строки.
<?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
?>Главный вывод: is_string("42") возвращает true. Кавычки делают это значение строкой из цифр, а не числом.
Практическое применение: защита перед строковыми операциями
Типичный сценарий использования — проверка значения перед вызовом строковых функций, чтобы ненадёжные или разнотипные данные не вызвали 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()
Эти две функции часто путают, поскольку числовые строки находятся между ними. is_string() спрашивает «является ли это типом string?», тогда как is_numeric() спрашивает «представляет ли это значение число?» — и числовая строка отвечает да на оба вопроса.
<?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
?>Если вам нужен именно тип integer или float, а не string, используйте is_int() или is_float(). Для преобразования значения в строку вместо простой проверки обратитесь к settype() или strval().
Заключение
is_string() — простая и надёжная проверка типа: она возвращает true только для значений, которые действительно являются строками, и false для всего остального. Используйте её всякий раз, когда нужно убедиться, что значение является строкой перед применением строковых операций — например, при обработке пользовательского ввода, API-ответов или данных с неопределённым типом. Помните о двух ловушках: число в кавычках, например "42", является строкой, а для проверки результатов следует использовать var_dump(), а не echo, чтобы false не потерялось незаметно. Для смежных проверок изучите is_numeric(), is_int(), is_array() и gettype().