Замените один подчеркнутый символ в переполнении стека

У меня есть строка с одним французским акцентом (например, лицей).

Я хочу просто заменить один символ, но выделенный символ похож на 2 символа, а результат никогда не будет хорошим:

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

Результат будет:

lycoe

Но результат

lyco�e

(Все настройки установлены в UTF8: php.ini, meta charset, 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
...

1

Решение

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

Функция mbStringToArray со страницы руководства для mb_split

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]