Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сортировка utf-8

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
dumkan
Отправлено: 13 Октября, 2013 - 19:42:59
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




пытаюсь отсортировать символы с слове таким образом:

echo $word;
$chars=str_split($word);
sort($chars);
$anagramma=implode('',$chars);
echo $anagramma;

$word выводит правильно, вместо $anagramma - крякозябы, причем символов по количеству в 2 раза больше чем в исходном слове. Я так понимаю из-за многобайтной кодировки.

если перекодировать в windows-1251 то все проходит нормально:

echo $word;
$chars=str_split(iconv('UTF-8','windows-1251',$word));
sort($chars);
$anagramma=iconv('windows-1251','UTF-8', implode('',$chars));
echo $anagramma;

Мне кажется так не совсем правильно. Есть ли правильное, элегантное решение?
 
 Top
Deonis
Отправлено: 13 Октября, 2013 - 23:17:04
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


Помог: 14 раз(а)




Не знаю, насколько можно назвать решение элегантным, но можно так:

PHP:
скопировать код в буфер обмена
  1. $word = 'Абракадабра';
  2. preg_match_all('#[а-яё]#iu', $word, $chars);
  3. sort($chars[0]);
  4. $anagramma = implode('',$chars[0]);
  5. echo $word . '<br>' . $anagramma;


Или может таким макаром:

PHP:
скопировать код в буфер обмена
  1. $word = 'Слово';
  2. $chars = preg_split('//u', $word, -1, PREG_SPLIT_NO_EMPTY);
  3. sort($chars);
  4. $anagramma = implode('',$chars);

(Отредактировано автором: 13 Октября, 2013 - 23:30:54)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Кодировки и все смежное »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB