Перевернуть строку в PHP

184
18 марта 2019, 21:50

Как перевернуть строку? Было Привет - стало тевирП.
Стандартную функцию не предлагать - strrev() не работает с кодировкой utf-8.
Варианты которые сделал:

  1. Использование mbstring. Проход циклом с конца строки, достаем буквы через mb_substr(), формируем итоговую строку.
  2. Использование регулярных выражений. Выборка символов через preg_match_all() в массив, делаем array_reverse() и implode().

Подскажите еще варианты алгоритмов/реализаций подобного преобразования.

Answer 1
function mb_strrev($text)
{
    return join('', array_reverse(preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY)));
}
echo mb_strrev('☆❤world');

Ну, и еще как вариант можно рассмотреть:

function mb_strrev($string)
{
    $string = strrev(mb_convert_encoding($string, 'UTF-16BE', 'UTF-8'));
    return mb_convert_encoding($string, 'UTF-8', 'UTF-16LE');
}
echo mb_strrev('☆❤world');
Answer 2

http://php.net/manual/ru/function.strrev.php#122953

function mb_strrev($str){
    $r = '';
    for ($i = mb_strlen($str); $i>=0; $i--) {
        $r .= mb_substr($str, $i, 1);
    }
    return $r;
}
echo mb_strrev("☆❤world"); // echo "dlrow❤☆"
?>
READ ALSO
Laravel .htaccess

Laravel .htaccess

Есть стандартный чистый проект Laravel 5x, установленный на XAMPP и лежащий в директории htdocs(localhost)

134
Как извлечь данные php

Как извлечь данные php

На сайте wordpress c использованием плагина woocomerce в момент формирования заказа я получаю переменную

159
Удаление и добавление элемента массива

Удаление и добавление элемента массива

Как в статическом массиве удалить элемент, индекс которого кратен 3 и добавить элемент после отрицательного элемента? 3 день не получается...

147