PHP str_replace 不替换字符“°”

PHP str_replace doesnt replace character "°"

您好!

我正在从 .xlsx 文件中获取字符串 ->"N°X"

我想用 Num_X

替换 "N°"

我正在尝试使用

$var = str_replace("N°","Num_",$var);

但没有任何内容被替换(根据 echo $var) 问题来自 ° 因为当我尝试用其他字符串替换某些字符串时 (没有 °)str_replace 有效

有什么建议吗?

确保输入的字符串是 UTF8。

$var = "N°X";
print mb_detect_encoding($var);

如果你没有从中得到 UTF-8,请转换它:

$var = mb_convert_encoding($var, 'UTF-8');

然后您的 str_replace 将按预期工作。

另一个可以帮助您解决编码问题的工具是 xxd

php -r '$var = "N°X"; echo $var;' | xxd

应该return

00000000: 4ec2 b058                                N..X

显示中间字符编码为C2B0 hex,即 Unicode 字符 'DEGREE SIGN' (U+00B0)。 fileformat.info 现在派上用场了。