两个相同的字符串,但长度不同。修剪,清洁等

时间:2010-09-04 16:40:38

标签: php

我有两个字符串,一个是由PHP生成的,存储在128个字符的数据库中。生成的字符串通过电子邮件发送给用户,他们必须输入字符串。

现在由于某种原因,来自用户(通过我测试)的那个,通过var_dump长度为132个字符。当我echo时,它们完全相同。 var_dump也是如此。字符数除外。这些额外的4个(不可见)字符来自哪里?

4 个答案:

答案 0 :(得分:13)

var_dump(bin2hex($str1));
var_dump(bin2hex($str2));

var_dump(htmlspecialchars($str1));
var_dump(htmlspecialchars($str2));

检查有什么不同,一旦找到,粘贴在这里不同的位,这样我们就可以找出差异的来源。

修改

这是&编码为&的通知&< - > &是4个不同的字符。我的想法是你发送纯文本电子邮件,但是对字符串进行授权,因此所有&都变为&

答案 1 :(得分:1)

可能一个是UTF-8,一个是iso-8859-1或其他一些不同的编码。

在其中一个上尝试utf_decode()并查看它是否匹配。

答案 2 :(得分:0)

这个可能是一个偷偷摸摸的编码问题,其中一个字符串有一个组合字符,如å存储为一个unicode字符,另一个字符串将它存储为两个单独的字符。 / p>

答案 3 :(得分:0)

使用以下内容添加@aularon答案:

的var_dump(用htmlspecialchars($ STR1));

的var_dump(用htmlspecialchars($ STR2));

暴露出它确实是&而不是另一个字符串。

要解决这个问题,我使用htmlspecialchars_decode($str)就可以了。