Посимвольное чтение кириллической строки в PHP

289
18 ноября 2018, 20:40

Вот есть припусти такой код.

$str = 'Это строка';
echo $str[1];

Выведется какае-то ересь.Подскажите пожалуйста как сделать чтобы выводило нормальные символы.

Answer 1

СТРОКА ЭТО НЕ МАССИВ. Нельзя просто так взять и обратиться к отдельному символу строки.

Используйте функции explode или str_split

Например:

$str = 'hello';
$char_array = explode('', $str);
print $char_array[1]; //e
Answer 2
echo mb_substr($string, 0, 1);
Answer 3

В PHP 5.5 такая конструкция посимвольного вывода $str[1] станет возможной.

А пока,

$str = 'abc de';
$i = 0;
do {
    echo $str{$i} , '<br/>';
    ++$i;
} while (isset($str{$i}));

Возможны проблемы с выводом кириллических символов, как, впрочем, и с использованием str_split.

Так что, вариант, который предложил @KryDos выглядит предпочтительнее.

Answer 4
$str = 'hello';
$char_array = explode('', $str);
print $char_array[1]; //e  

Не понимаю, как можно использовать это, когда с помощью explode можно разбить строку по словам на массив, но не слово по буквам. Разделитель должен быть в любом случае, хотя бы пробел, но он ни в коем случае не должен быть пустым.

Answer 5

Попробуйте так:

$str = 'Это строка';
echo mb_substr($str, 0, 1, 'UTF-8');
Answer 6
// Получение первого символа строки
$str = 'This is a test.';
$first = $str[0];
// Получение третьего символа строки
$third = $str[2];
Answer 7

С поддержкой кириллицы:

$arChar = preg_split('/(?<!^)(?!$)/u', $string);
print_r($arChar);
READ ALSO
Передача переменных в другой файл

Передача переменных в другой файл

Имеется файл scriptphp в нём определенный код на выборку с бд и добавление полученных данный в массив, но для примере я возьму лишь переменную,...

159
Добавление данных из формы в несколько таблиц MODx

Добавление данных из формы в несколько таблиц MODx

Помогите, пожалуйста, с данным препятствием на пути к истине) Добавлять в свою таблицу из формы я научился (по ссылке https://ilyautru/xpdo/adding-editing-and-deleting-custom-objects/...

135
C++ for each цикл. Ошибка компиляции.

C++ for each цикл. Ошибка компиляции.

Не могу понять в чем проблемаПросто не компилируется данный код:

177
Метод erase из vector&lt;string&gt; не принимает параметр string

Метод erase из vector<string> не принимает параметр string

В этом отрывке кода не компилируется erase

175