/
Программирование
/
Курс PHP
/

Сравнение строк

PHP: Сравнение строк

Операции сравнения работают с числами и со строками. В PHP строки сравниваются лексикографически: посимвольно слева направо по числовым кодам символов.

<?php

var_dump('apple' < 'banana');  // => bool(true)
var_dump('cat' > 'dog');       // => bool(false)
var_dump('abc' === 'abc');     // => bool(true)
var_dump('hello' !== 'world'); // => bool(true)

Здесь 'apple' < 'banana', потому что код a (97) меньше кода b (98), и именно первый символ решает исход сравнения. Код символа можно посмотреть с помощью функции ord():

<?php

print_r(ord('a')); // => 97
print_r(ord('b')); // => 98

Сравнение чувствительно к регистру: код 'Z' (90) меньше кода 'a' (97). Пример сравнения, где первые буквы разного регистра:

<?php

var_dump('Zebra' < 'apple');  // => bool(true)  — 'Z'(90) < 'a'(97)
var_dump('apple' < 'Banana'); // => bool(false) — 'a'(97) > 'B'(66)
var_dump('Apple' < 'apple');  // => bool(true)  — 'A'(65) < 'a'(97)

Напишем функцию, которая проверяет, начинается ли слово с заданной буквы. Для этого возьмем первый символ строки и сравним его с нужной буквой:

<?php

function startsWithLetter(string $word, string $letter): bool
{
    return $word[0] === $letter;
}

var_dump(startsWithLetter('apple', 'a'));  // => bool(true)
var_dump(startsWithLetter('banana', 'a')); // => bool(false)

Операции сравнения представляют собой такие же выражения, как и арифметические. В них можно подставлять готовые значения и другие выражения, как в примере выше: $word[0]. Например, вместо числа можно использовать результат работы функции strlen(), которая возвращает длину строки:

<?php

var_dump(strlen('apple') > 3); // => bool(true), потому что strlen('apple') — это 5
var_dump(strlen('hi') > 3);    // => bool(false), потому что strlen('hi') — это 2

В примере выше сначала выполняется функция strlen('apple'), результатом будет число 5. Потом это число сравнивается с 3. Другими словами, сначала считаются аргументы выражения (например, длина строки), а потом выполняется операция сравнения.

Так можно комбинировать разные операции, получая более сложные проверки.

Полезные предикаты

В PHP есть много встроенных функций-предикатов для работы со строками. Они возвращают true или false и помогают проверять разные свойства строки. Ниже приведены самые часто используемые:

<?php

var_dump(str_starts_with('hello', 'he')); // => bool(true) — строка начинается с 'he'
var_dump(str_ends_with('hello', 'lo'));   // => bool(true) — строка заканчивается на 'lo'
var_dump(str_contains('hello', 'ell'));   // => bool(true) — строка содержит 'ell'

Такие функции позволяют проверять строки на нужные условия прямо в коде, без написания дополнительных функций.

Задание

При регистрации на сайте программа проверяет, что пароль достаточно длинный — больше 5 символов. Напишите функцию isLongWord(), которая возвращает true, если длина переданного слова больше 5 символов, и false в противном случае.

Пример работы:

<?php

var_dump(isLongWord('apple'));  // => bool(false)
var_dump(isLongWord('banana')); // => bool(true)

Полезное

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются