Is string: примеры (PHP)
is_string(mixed $value): boolФункция is_string() в PHP является встроенной функцией для проверки типа переменной. Её основная задача — определить, является ли переданное значение строкой (string).
Эта функция часто используется для валидации входных данных, проверки значений, возвращаемых из баз данных или API, а также для обеспечения корректной работы функций, требующих строковые аргументы.
Синтаксис:
bool is_string ( mixed $var )
Функция принимает один обязательный параметр:
- $var — проверяемая переменная. Может быть любого типа.
Возвращаемое значение: true, если переменная является строкой, и false в противном случае.
Ниже представлены простые примеры проверки различных типов данных.
$var = 'Пример текста';
var_dump(is_string($var));bool(true)
$var = 123;
var_dump(is_string($var));bool(false)
$var = '456';
var_dump(is_string($var));bool(true)
$var = true;
var_dump(is_string($var));bool(false)
$var = ['a', 'b'];
var_dump(is_string($var));bool(false)
$var = null;
var_dump(is_string($var));bool(false)
- gettype($var) === 'string' — возвращает тип переменной в виде строки. Менее эффективна, чем is_string, но может быть полезна, если нужен именно тип в строковом представлении.
$var = 'test'; var_dump(gettype($var) === 'string');bool(true)
- is_scalar($var) — проверяет, является ли переменная скалярным значением (integer, float, string, boolean). Возвращает true для строк, но также и для других скалярных типов.
$var = 'text'; var_dump(is_scalar($var)); $var = 5; var_dump(is_scalar($var));bool(true) bool(true)
- ctype_* — семейство функций для проверки символов в строке (например, ctype_digit — все ли символы цифры). Эти функции проверяют содержимое строки, а не её тип, и возвращают false для пустых строк и нестроковых значений.
$var = '123'; var_dump(ctype_digit($var)); $var = 123; var_dump(ctype_digit($var));bool(true) bool(false)
Функцию is_string предпочтительнее использовать, когда необходимо точно убедиться, что переменная имеет строковый тип, а не содержимое определённого вида.
Функция вернёт true для чисел, записанных как строка, что иногда неожиданно для разработчиков.
$var = '123.45';
var_dump(is_string($var));
// Это строка, а не число.
$isNumber = is_numeric($var); // true, но тип - stringbool(true)
Иногда путают is_string с empty() или isset().
$var = '';
var_dump(is_string($var)); // true - это строка
var_dump(empty($var)); // true - строка пустаяbool(true) bool(true)
Некоторые функции могут возвращать строку или false в случае ошибки.
$data = json_decode('invalid json', true);
var_dump(is_string($data)); // false, так как json_decode вернул NULL
$str = simplexml_load_string('<root></root>');
var_dump(is_string($str)); // false, это объект SimpleXMLElementbool(false) bool(false)
В PHP 8 существенных изменений в работе функции is_string не произошло. Однако, в PHP 8.0 была усилена система типов, что делает проверки типов более важными. Также, начиная с PHP 7.0, скалярные типы можно объявлять в сигнатурах функций, что часто делает явную проверку is string внутри функции менее необходимой.
В PHP 8.1 появился тип never, но он не связан напрямую с is_string.
$array = [1, 'text', '123', []];
$result = array_map('is_string', $array);
print_r($result);Array
(
[0] =>
[1] => 1
[2] => 1
[3] =>
)$mixedArray = [10, 'apple', null, 'banana', 3.14, ''];
$stringArray = array_filter($mixedArray, 'is_string');
print_r($stringArray);Array
(
[1] => apple
[3] => banana
[5] =>
)class MyClass {
public function __toString() {
return 'Object as string';
}
}
$obj = new MyClass();
var_dump(is_string($obj)); // Объект не является строкой
echo $obj; // Автоматически вызовется __toStringbool(false) Object as string
$var = 0;
var_dump(is_string($var)); // false
$var = $var . ''; // Конкатенация превращает в строку
var_dump(is_string($var)); // true
var_dump($var);bool(false) bool(true) string(1) "0"
function processInput($input) {
if (is_string($input)) {
return 'Длина строки: ' . strlen($input);
} else {
return 'Входные данные не являются строкой';
}
}
echo processInput('Привет');
echo '\n';
echo processInput(42);Длина строки: 12 Входные данные не являются строкой
$var = '0';
var_dump($var == 0); // true (нестрогое сравнение)
var_dump($var === 0); // false (строгое сравнение)
var_dump(is_string($var) && $var === '0'); // truebool(true) bool(false) bool(true)
Is string в Python
Используется функция isinstance() или сравнение типа.
var = 'Пример'
print(isinstance(var, str))
print(type(var) is str)True True
Is string в Javascript
Используется оператор typeof.
let var = 'Пример';
console.log(typeof var === 'string');
// или с учётом устаревших объектов String
console.log(typeof var === 'string' || var instanceof String);true
Is string в MySQL
Прямого аналога нет. Для проверки типа данных в столбце можно использовать функции CAST() или операторы сравнения, но обычно проверка типа происходит на уровне приложения.
-- Косвенная проверка через конкатенацию
SELECT '123' REGEXP '^[0-9]+$'; -- Проверяет, состоит ли строка только из цифр1 (true)
Is string в Java
String var = "Пример";
System.out.println(var instanceof String);true