utf-8 строка как массив ... Как ?

  • Автор темы Автор темы ivanmara
  • Дата начала Дата начала

ivanmara

Новичок
utf-8 строка как массив ... Как ?

Добрый день. Есть код:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<? 

	define('ALFAVIT', 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ');

	$AlfavitString = ALFAVIT;

	for ($i = 0; $i < strlen($AlfavitString); ++$i)
	{ 
              echo $AlfavitString[$i].' ';
	};

?>
</body>
</html>

Скрипт создан в кодировке utf-8, при работе скрипта выводятся знаки вопросов. я так понимаю что проблема в кодировке строки где на каждый символ приходиться несколько байтов и инструкция echo $AlfavitString[$i].' '; делает побайтный вывод который уже как таковой буквой не являеться и браузер выдаёт знаки вопросов.

Отсюда вопрос ... как правильно работать со строками в utf-8 кодировке в частности пробежаться по нему посимвольно и сделать корректно вывод аля echo $AlfavitString[$i] ?
 
К сажалению в mbstring модуле нет аналогов для работы со строкой как массивом ... (
 
господи.
вот придумают же люди себе проблему на пустом месте.
навскидку придумывается десяток решений задачи, для которой может потребоваться строка, как массив.
но мы уп(с)ремся, но будем хотеть только так.
 
*****
Отлично ... ну придумай решение для echo $AlfavitString[$i].' '; для utf-8 случая?
 
Отлично ... ну придумай решение для echo $AlfavitString[$i].' '; для utf-8 случая?
хороший вопрос, нужно взять на заметку, жаль только половина отвалится уже на вопросе как сделать тоже с ASCII
 
Ради интереса покопался, сделал тупо в лоб, понадобилось всего две функции:
mb_strlen
mb_substr

Есть ли решения проще? :)
 
тогда echo preg_replace('~.~u', "$0 ", 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ');
 
Сверху