PHP中的substr_replace编码

6 php encoding fwrite

我想写一个文本文件.当我在php中使用substr_replace时,编码会发生变化.它不能正确打印希腊字符.如果我不是一切都很好.有什么建议?

<?php
$file = "test.txt";
$writeFile = fopen($file, "w+");//read/write
$myarray = array("????","???????","?????");
$myarray[0] = substr_replace($myarray[0],"?", 0,1);

foreach ($myarray as $data){      
fwrite($writeFile, $data."\n");
}
?>
Run Code Online (Sandbox Code Playgroud)

观察
εφδφ
δφδσφδσ
δφδφδ

没有
substr_replace的
结果
δφδφδφδσφδσδφδφδ

M98*_*M98 14

您可以使用以下两个功能:

来自shkspr.mobi

function mb_substr_replace($original, $replacement, $position, $length)
{
 $startString = mb_substr($original, 0, $position, "UTF-8");
 $endString = mb_substr($original, $position + $length, mb_strlen($original), "UTF-8");

 $out = $startString . $replacement . $endString;

 return $out;
}
Run Code Online (Sandbox Code Playgroud)

来自GitHub

function mb_substr_replace($str, $repl, $start, $length = null)
{
    preg_match_all('/./us', $str, $ar);
    preg_match_all('/./us', $repl, $rar);
    $length = is_int($length) ? $length : utf8_strlen($str);
    array_splice($ar[0], $start, $length, $rar[0]);
    return implode($ar[0]);
}
Run Code Online (Sandbox Code Playgroud)

我试过两个都很好


小智 0

您可以尝试使用该mb_convert_encoding()函数来设置正确的编码。