如何在PHP中找到字节偏移处的字符?

时间:2011-01-09 17:00:41

标签: php

转换为UTF-8后,我正在尝试解决MySQL数据库中某些(显然)受损的序列化数据的问题。当我尝试反序列化它们时,我会得到通常的结果:

Notice: unserialize() [function.unserialize]: Error at offset 1481 of 255200 bytes [...]

但是,鉴于这是一个多字节字符串,我无法弄清楚如何找到该字节偏移处的字符。我需要的是substr(),但是对于字节,而不是字符。我怎么能这样做?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您必须执行substr($str, 1481, 2);substr($str, 1481, 3);substr($str, 1481, 4);。如果它是UTF-8,你会在3个子串中找到它,因为UTF-8字符可能需要2到4个字符,具体取决于第一个字符。

我遇到了很多问题,所以如果你找不到编码的内容,请再次回答:-)我会尽力帮你。

祝你好运!

编辑:不要忘记做标题(“Content-type:text / html; charset = utf8”);正确观察结果。

答案 1 :(得分:0)

substr确实可以处理字节而不是字符。所以这应该返回第1481个字节:

substr($data, 1481, 1)