php - 使用 str_replace 在韩语字符中显示菱形问号字符
问题描述
我正在替换命名变量的第二个字母中的“*”$author
,但结果似乎错误。
注意:我已经放置了<meta charset="utf-8">
但错误仍然相同。
这是示例代码
$str_to_replace = "*";
$author_second_char = $row['author'][1]; // value: �
$author_display = $row['author']; //value: 제드
$author = str_replace($author_second_char, "*" ,$author_display );
//example output = �*�드
解决方案
韩语使用多字节字符,因此您不能将字符串用作类似数组的结构,因为每个位置仅代表每个韩语字符的一部分。相反,您需要根据用于存储每个字符的字节数将字符串拆分为一个数组。反复试验得出韩语字符的字节长度为 3。
这是如何实现它的代码片段。一旦确定了正确的位置,我将其简化为直接替换。
$a = '제드';
$str_to_replace = "*";
$author_array = str_split( $a, 3 ); // necessary because korean uses multibyte characters
$author_array[1] = '*';
$author = implode( '', $author_array);
echo("<br>$a<br>$author");
输出:
제드
제*
推荐阅读
- typescript - 打字稿 - 当您不知道默认存在时如何导出所有包含默认值
- c++ - 链接 Cuda (cudart.lib) 使 DXGI DuplicateOutput1() 失败
- ios - 架构 armv7 的 60 个重复符号
- javascript - JavaScript 到 C# 数值精度损失
- android-studio - 适配器不更新
- android - Xamarin Android XamarinBuildAndroidAarRestore 任务无法从 Xamarin.Build.Download 加载
- scala - 这个错误的可能原因是什么?“java.io.NotSerializableException:scala.Unit$”
- python - Asyncio 和带标签的 href
- r - 在R中的if语句之后将每个第n个文件保存到一个新的子文件夹中
- javascript - “useRefs”变量是 div 引用的初始值?