当使用特殊字符时,循环产生奇怪的结果



当添加br并使用特殊字符时,在循环中使用特殊字符时出现奇怪的问题,如果不使用带有特殊字符的单词则没有问题,但是当使用特殊字符并使用br时显示一个在另一个显示奇怪字符

例如,如果不使用br:

$text="ála";
for($d=0;$d<strlen($text);$d++)
{
echo $text[$d];

}

结果:阿拉巴马州

如果使用br显示奇怪的字符

$text="ála";
for($d=0;$d<strlen($text);$d++)
{
echo $text[$d];
print "<br>";

}

结果:��l

我不知道如何修复它,也不明白为什么会发生这个问题,但是这里可以解释发生了什么,regards

之所以会发生这种情况,是因为重音e是UTF-8的一部分,它被认为是"多字节"的;字符。它的输出是不正确的,因为你实际上把字符从中间分开,把<br>放在中间。因为你分割的是字符串的字节,而不是字符,所以计算机不再理解有一个重音e。

如果使用的是PHP 7.4,则可以使用mb_str_split函数。您需要启用mbstring扩展

如果你没有启用,这个答案可以帮助你做它没有:什么是最好的方式将一个字符串分割成一个数组的Unicode字符在PHP?

最新更新