Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как проверить, является ли строка палиндромом

Короткий ответ

Сравните строку с ней же, записанной наоборот:

<?php
 
var_dump('level' === strrev('level'));
var_dump('hello' === strrev('hello'));

Результат:

bool(true)
bool(false)

Фраза с пробелами и знаками

Оставьте только буквы и цифры и приведите их к нижнему регистру:

<?php
 
function isPalindrome(string $text): bool
{
    $clean = mb_strtolower(preg_replace('/[^\p{L}\p{N}]/u', '', $text));
    $chars = mb_str_split($clean);
 
    return $chars === array_reverse($chars);
}
 
var_dump(isPalindrome('A man, a plan, a canal: Panama'));
var_dump(isPalindrome('А роза упала на лапу Азора'));

Результат:

bool(true)
bool(true)

Функции из этого ответа

  • strrev — Переворачивает строку.
  • mb_str_split — Разбивает строку на символы с учётом любого алфавита.
  • preg_replace — Заменяет всё, что подошло под регулярное выражение.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.