#php #алгоритм
Как перевернуть строку? Было Привет - стало тевирП.
Стандартную функцию не предлагать - strrev() не работает с кодировкой utf-8.
Варианты которые сделал:
Использование mbstring. Проход циклом с конца строки, достаем буквы через mb_substr(),
формируем итоговую строку.
Использование регулярных выражений. Выборка символов через preg_match_all() в массив,
делаем array_reverse() и implode().
Подскажите еще варианты алгоритмов/реализаций подобного преобразования.
Ответы
Ответ 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');Ответ 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❤☆" ?>Ответ 3
Комментариев нет:
Отправить комментарий