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() позволяет разбить строку на массив символов, развернуть массив и собрать обратно. Этот метод удобен для сложных манипуляций с многобайтовыми символами.
Функция 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
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
$sentence = 'Утро становится добрым';
$words = explode(' ', $sentence);
$reversedWords = array_map('strrev', $words);
echo implode(' ', $reversedWords);
?>ортУ нитаетсоц мырбод
<?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
function mirrorText($text) {
$reversed = strrev($text);
return $text . ' | ' . $reversed;
}
echo mirrorText('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# можно использовать метод Array.Reverse() или LINQ. Для Unicode строк рекомендуется подход с учетом суррогатных пар.
string text = "Hello";
char[] charArray = text.ToCharArray();
Array.Reverse(charArray);
string result = new string(charArray);
Console.WriteLine(result);olleH