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 现在派上用场了。
您好!
我正在从 .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 现在派上用场了。