Я хотел бы написать (HTML) парсер на основе конечного автомата, но у меня есть сомнения, как на самом деле читать / использовать ввод. Я решил загрузить весь ввод в одну строку, а затем работать с ней как с массивом и держать его индекс в качестве текущей позиции синтаксического анализа.
Не будет проблем с однобайтовым кодированием, но в многобайтовом кодировании каждое значение представляет не символ, а байт символа.
Пример:
$mb_string = 'žščř'; //4 multi-byte characters in UTF-8
for($i=0; $i < 4; $i++)
{
echo $mb_string[$i], PHP_EOL;
}
Выходы:
Ĺ
ž
Ĺ
Ą
Это означает, что я не могу перебрать строку в цикле для проверки отдельных символов, потому что я никогда не знаю, нахожусь ли я в середине символа или нет.
Итак, вопросы:
- Как мне прочитать многобайтовый сейф?
один символ из строки в
производительность дружественным образом?
- Это хорошая идея работать с
строка как массив в этом
случай
- Как бы вы прочитали ввод?