使用php解析html文件的问题

时间:2011-05-06 15:46:05

标签: php character-encoding

我有一些代码可以解析一个html文件,我偶然发现了一个包含这个字符的页面,它搞砸了解析: “

当我执行以下代码时,$ len被赋值为3。

$test = "“";
$len = strlen($test);

我怀疑这个角色可能是unicode。

现在我通过用标准双引号替换卷曲双引号来解决这个问题。但是我担心其他可能包含类似字符的文件,我不想为每个单独的实例替换函数。

如何让php将其视为单个字符?

4 个答案:

答案 0 :(得分:1)

PHP的标准字符串处理函数不是多字节感知的,它们愚蠢地计算字符串中的字节数。

如果您安装了multibyte extensionmb_strlen()就是您要找的。

例如,如果您的数据是UTF-8:

$test = "“";
$len = mb_strlen($test, "UTF-8");

答案 1 :(得分:1)

对于unicode,使用php函数以mb_(multibyte)开头:例如:http://php.net/manual/en/function.mb-strlen.php

答案 2 :(得分:1)

使用mb_strlen(),它将处理多字节字符。

答案 3 :(得分:1)

您需要使用多字节版本的函数> http://php.net/manual/en/function.mb-strlen.php