php - 在 PHP 中解析多字节字符串

标签 php string parsing multibyte

我想编写一个基于状态机的 (HTML) 解析器,但我对如何实际读取/使用输入有疑问。我决定将整个输入加载到一个字符串中,然后像处理数组一样处理它,并将其索引保存为当前解析位置。

单字节编码没有问题,但多字节编码每个值代表的不是一个字符,而是一个字符的一个字节。

示例:

$mb_string = 'žščř'; //4 multi-byte characters in UTF-8

for($i=0; $i < 4; $i++)
{
   echo $mb_string[$i], PHP_EOL;
}

输出:

Ĺ
ž
Ĺ
Ą

这意味着我不能在循环中遍历字符串来检查单个字符,因为我永远不知道我是否在字符的中间。

所以问题是:

  • 我如何多字节安全地读取一个 字符串中的单个字符 性能友好的方式?
  • 与 字符串,因为它是一个数组 案例?
  • 您将如何阅读输入内容?

最佳答案

http://php.net/mb_string是你要找的东西

  • 只是 mb_substr 个字符一个接一个
  • 直到 PHP6
  • 具体是什么输入?一般的常规方式

关于php - 在 PHP 中解析多字节字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2590980/

相关文章:

php - Elasticsearch - 我需要 JDBC 驱动程序吗?

c++ - MFC CString 是宽字符字符串吗

r - 使用 R 解释外部使用的符号公式

java - 接受 05/05/1999 和 5/5/1999 等的日期时间解析

javascript - 在 PHP 的 while 循环中更新多个日期列

php - 动态多维数组

使用 C++ 的 PHP 扩展

string - 从 NSString 右侧搜索子字符串

java - 在多维数组中设置字符串

java - 如何在Java中解析css文件