W3docs

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() проверяет тип, а не содержимое. Функция всегда проверяет только одно значение за раз и никогда его не преобразует.

Базовый пример

php— editable, runs on the server

$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().

Практика

Практика
Какие из следующих утверждений об 'is_string' в PHP верны?
Какие из следующих утверждений об 'is_string' в PHP верны?
Was this page helpful?