替换php中的一个重音字符

时间:2015-03-03 23:37:16

标签: php character non-ascii-characters

我有一个带有一个法国重音字符的字符串(例如:lycée)。

我想要替换一个字符,但重点字符就像2个字符,结果永远不会好:

$str='lycée';
$str[3]='o';
echo $str;

结果将是:

lycoe

但结果是

lyco�e

(所有设置都设置为UTF8:php.ini,meta charset,mb_internal_encoding,notepad ++ file encoding ...)

当我使用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
...

1 个答案:

答案 0 :(得分:0)

<?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函数