Проблема с кодировкой reverse-строки

Рейтинг: 0Ответов: 1Опубликовано: 11.04.2015

В общем, как всегда делать нечего и я решил написать маленький скрипт для перекручивания строк в обратном порядке. Все вменяемо работает, но если вдруг ввести русский текст, то он превращается в кракозябры и не декодится из них(дело даже не в charset). Помогите, что не так? Сам скрипт:

<?php
echo '<center><meta charset="utf-8"><hr>';
$sss=str_split($_POST['txt']);
$m=count($sss);
$i=0;
echo 'Regular text: ';
foreach ($sss as $v)
{
$i++;
$word[$i]=$v;
echo $word[$i];
}
echo '<br><br>Reversed text: ';
$i=$m;
do 
{
echo $word[$i];
$i--;
} while ($i>0);
echo '<hr><a href="index.php">Back</a><hr>';
?>

Ответы

▲ 1

Потому что Ваш код оперирует байтами, а строка похоже юникодная, где для киррилицы идет по два байта на символ (а для японских может и по три, и по четыре байта на символ!). Естественно, если развернуть строку побайтово, то будет плохо.

Для разворачивания подобных строк смотрите примеры по ссылке. Также читайте о работе с мультибайтовыми строками.