Смотрите есть такой код: Код (PHP): $str = 'hello'; for($i = 0; $i < strlen($str); $i++) { echo( "<div>$str[$i]</div>" ); } Все работает корректно, но если изменить строку на русские буквы, за место букв будут выводиться квадраты, короче не то что надо. Я знаю что это из-за кодировки. Вопрос такой, можно при таком обращении $str[$i] как-нибудь заставить выводить кириллицу нормально? по мимо "написать свой РНР", "самому допилить РНР" ну и т.п. Конечная задача, мне надо каждый символ в строке сравнить с нужным мне символом, типа такого: Код (PHP): $str = '........'; for($i = 0; $i < strlen($str); $i++) { if ( $str[$i] == 'ж' ) { // что то сделать } }
В кодировке utf-8 на каждый символ может быть разное число байтов, поэтому индексация не работает. Единственный вариант: Код (Text): mb_substr($str, $i, 1); В однобайтовых ваш код будет работать
Вы мне, кстати, подали идею написать (или найти) класс-обёртку над многобайтовыми строковыми функциями, чтоб реализовывал интерфейс с индексами. Может и удобно будет Добавлено спустя 26 минут 52 секунды: Нашёл такой. Может вам и пригодится. https://code.google.com/p/php-string/