gpt4 book ai didi

Php str_replace 不适用于特殊字符

转载 作者:可可西里 更新时间:2023-11-01 00:43:59 25 4
gpt4 key购买 nike

为什么这没有按预期工作:

 echo str_replace("é","é","Fédération Camerounaise de Football");

结果:

"Fédération Camerounaise de Football"

我希望有:

"Fédération Camerounaise de Football"

最佳答案

你做错了。这个字符串没有错误,需要替换,它只是用 UTF-8 编码。

您所要做的就是 utf8_decode('Fédération Camerounaise de Football')

更新:

您看到 Fédération Camerounaise de Football 作为输出,因为您正在以 UTF-8 双重传递数据。

观察:

以UTF-8格式保存的file1.php:

<?php
echo "Fédération Camerounaise de Football";

输出:

Fédération Camerounaise de Football

现在,如果您告诉浏览器您正在使用 UTF-8,它应该直接显示内容:

以UTF-8格式保存的file2.php:

<?php
header('Content-Type: text/html; charset=utf-8');
echo "Fédération Camerounaise de Football";

输出:

Fédération Camerounaise de Football

完美。

然而,你做的事情更糟。您有一个 UTF-8 编码的字符串,并通过将其写入 UTF-8 编码的文件再次对其进行编码。

以UTF-8格式保存的file3.php:

<?php
echo "Fédération Camerounaise de Football";

输出:

Fédération Camerounaise de Football

真是一团糟。让我们看看是否可以用 str_replace 解决这个问题,让它变得更糟:

以UTF-8格式保存的file4.php:

<?php
echo str_replace("é","é","Fédération Camerounaise de Football");

输出:

Fédération Camerounaise de Football

如您所见,我们“修复”了它。有点。 这就是你在做的事情。你正在将 é 转换为 é,即使你没有看到它,因为你的编辑器不允许您会看到编码背后的真实符号,但浏览器会看到

让我们用 ASCII 再试一次:

以ASCII格式保存的file5.php:

<?php
echo str_replace("é","é","Fédération Camerounaise de Football");

输出:

Fédération Camerounaise de Football

魔法!浏览器现在得到了一切。但真正的解决办法是什么?出色地。如果您的 PHP 文件中有一个硬编码的字符串,那么您应该简单地编写 Fédération Camerounaise de Football 而不是把该死的东西弄错。但是,如果您是从另一个文件或数据库中获取它,则应该参加以下两门类(class)之一:

  1. 使用 utf8_decode() 将您获取的数据转换为所需的输出。

  2. 不要转换任何内容并使用 header('Content-Type: text/html; charset=utf-8'); 告诉浏览器您正在以 UTF- 8 格式,所以它会正确显示内容。

关于Php str_replace 不适用于特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25465114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com