【发布时间】:2026-01-29 03:15:02
【问题描述】:
我有一个带有一个法语重音字符的字符串(例如:lycée)。
我只想替换一个字符,但重音字符就像 2 个字符,结果永远不会好:
$str='lycée';
$str[3]='o';
echo $str;
结果是:
lycoe
但结果是
lyco�e
(所有设置都设置为 UTF8:php.ini、元字符集、mb_internal_encoding、notepad++ 文件编码...)
当我使用 substr_replace 函数时,我遇到了同样的问题。
如果我使用:
$str= iconv('UTF-8','ASCII//TRANSLIT',$str);
问题正在转移到其他角色:
$str='lycée';
$str= iconv('UTF-8','ASCII//TRANSLIT',$str);
$str[2]='o';
echo $str;
结果:
lyo?e
谁能帮帮我??
我只有角色的位置。
我想要:
$str[2]='o' -> lyoée
$str[3]='o' -> lycoe
$str[4]='o' -> lycéo
...
【问题讨论】:
-
如何使用
str_replace或mb_str_replace -
我不认识这个角色。我只是有位置
-
UTF-8 使用多个字节来编码非 ascii 字符,这解释了您的问题。您只需替换
é字符的几个字节之一。 -
我找到了解决办法!!!这是 mb_substr_replace 函数 (gist.github.com/stemar/8287074)
-
啊好的,你有答案了,如果有帮助的话,我还有另一个答案
标签: php character non-ascii-characters