替换 php 中的一个重音字符
Replace one accentued characters in php
我有一个带有一个法语重音字符的字符串(例如: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
...
<?php
$str='lycée';
//$str[3]='o';
//echo $str;
function mbStringToArray ($string) {
$strlen = mb_strlen($string);
while ($strlen) {
$array[] = mb_substr($string,0,1,"UTF-8");
$string = mb_substr($string,1,$strlen,"UTF-8");
$strlen = mb_strlen($string);
}
return $array;
}
$new_str=mbStringToArray($str);
$new_str[3]='o';
echo implode($new_str); //output: lycoe
mb_split
手册页中的函数 mbStringToArray
我有一个带有一个法语重音字符的字符串(例如: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
...
<?php
$str='lycée';
//$str[3]='o';
//echo $str;
function mbStringToArray ($string) {
$strlen = mb_strlen($string);
while ($strlen) {
$array[] = mb_substr($string,0,1,"UTF-8");
$string = mb_substr($string,1,$strlen,"UTF-8");
$strlen = mb_strlen($string);
}
return $array;
}
$new_str=mbStringToArray($str);
$new_str[3]='o';
echo implode($new_str); //output: lycoe
mb_split
手册页中的函数 mbStringToArray