1

Strrev: примеры (PHP)

Использование функции strrev для переворота строк в PHP
Раздел: Работа со строками
strrev(string string): string

Основные сведения о strrev

Функция strrev() выполняет разворот переданной строки, располагая символы в обратном порядке. Эта операция применяется при решении задач, связанных с палиндромами, изменением порядка данных или низкоуровневой обработкой текста.

Аргументы функции

Функция принимает единственный обязательный параметр:

  • string – исходная строка, символы которой требуется перевернуть. Если передается не строковый тип, значение будет преобразовано в строку.

Возвращаемое значение – перевернутая строка. Если передана пустая строка, функция вернет пустую строку.

Базовые примеры использования

Разворот простой строки
<?php
$result = strrev('Hello');
echo $result;
?>
olleH
Работа с числами
<?php
$result = strrev(12345);
echo $result;
?>
54321
Обработка пустой строки
<?php
$result = strrev('');
var_dump($result);
?>
string(0) ""

Похожие функции в PHP

str_split и implode

Комбинация str_split() и implode() позволяет разбить строку на массив символов, развернуть массив и собрать обратно. Этот метод удобен для сложных манипуляций с многобайтовыми символами.

array_reverse и implode

Функция array_reverse() применяется к массиву символов, полученному через str_split(). Такой способ может быть полезен при работе с дополнительными преобразованиями элементов массива.

Пользовательская реализация

Для строк в кодировке UTF-8, где символы могут занимать несколько байт, стандартная strrev() работает некорректно. В таких случаях предпочтительнее использовать пользовательскую функцию с поддержкой многобайтовых символов.

Типичные ошибки и особенности

Некорректная работа с кириллицей в однобайтовой кодировке

При использовании однобайтовых строковых функций с многобайтовой кодировкой (например, UTF-8) символы могут отображаться некорректно.

<?php
$result = strrev('Привет');
echo $result; // Может вывести "���" или искаженный текст
?>
��ири�
Передача массива или объекта

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

<?php
$result = strrev([1, 2]);
echo $result;
?>
Array

История изменений функции

Функция strrev() существует с ранних версий PHP и не претерпела значительных изменений в своих основных поведенческих аспектах. Начиная с PHP 8.0, улучшена обработка нескалярных типов, но сигнатура и базовый алгоритм работы остались прежними. В версии PHP 8.2 не было внесено изменений, влияющих на ее использование.

Расширенные примеры применения

Проверка строки на палиндром
Пример php
<?php
function isPalindrome($word) {
    $cleaned = preg_replace('/[^a-zA-Zа-яА-Я0-9]/u', '', mb_strtolower($word));
    return $cleaned === mb_strrev($cleaned);
}

function mb_strrev($str) {
    $chars = mb_str_split($str);
    return implode('', array_reverse($chars));
}

echo isPalindrome('А роза упала на лапу Азора') ? 'Да' : 'Нет';
?>
Да
Обратный порядок слов в предложении
Пример php
<?php
$sentence = 'Утро становится добрым';
$words = explode(' ', $sentence);
$reversedWords = array_map('strrev', $words);
echo implode(' ', $reversedWords);
?>
ортУ нитаетсоц мырбод
Разворот строки с сохранением позиции заглавных букв
Пример php
<?php
function preserveCaseReverse($str) {
    $positions = [];
    $chars = str_split($str);
    foreach ($chars as $i => $char) {
        if (ctype_upper($char)) {
            $positions[] = $i;
        }
    }
    $reversed = strrev(strtolower($str));
    $result = str_split($reversed);
    foreach ($positions as $pos) {
        $newPos = strlen($str) - $pos - 1;
        $result[$newPos] = strtoupper($result[$newPos]);
    }
    return implode('', $result);
}

echo preserveCaseReverse('HeLLo');
?>
oLlEh
Генерация зеркального текста для эффектов
Пример php
<?php
function mirrorText($text) {
    $reversed = strrev($text);
    return $text . ' | ' . $reversed;
}
echo mirrorText('PHP');
?>
PHP | PHP
Обработка числовых идентификаторов
Пример php
<?php
$orderId = '102030';
$reversedId = strrev($orderId);
echo 'Исходный: ' . $orderId . ', Обратный: ' . $reversedId;
?>
Исходный: 102030, Обратный: 030201

Аналоги в других языках программирования

Strrev в Python

В Python используется срез строки с шагом -1. Этот метод работает с Unicode корректно.

text = 'Привет'
result = text[::-1]
print(result)
тевирП

Strrev в Javascript

В JavaScript строки иммутабельны. Для разворота применяются методы split(), reverse() и join().

const text = 'Hello';
const result = text.split('').reverse().join('');
console.log(result);
olleH

Strrev в MySQL

В СУБД MySQL существует функция REVERSE(), работающая аналогично PHP. Она используется в SQL-запросах.

SELECT REVERSE('MySQL');
LQSyM
C#

В C# можно использовать метод Array.Reverse() или LINQ. Для Unicode строк рекомендуется подход с учетом суррогатных пар.

string text = "Hello";
char[] charArray = text.ToCharArray();
Array.Reverse(charArray);
string result = new string(charArray);
Console.WriteLine(result);
olleH

PHP strrev function comments

En
Strrev Reverse a string