首页 > 解决方案 > 使用 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 = �*�드 

标签: php

解决方案


韩语使用多字节字符,因此您不能将字符串用作类似数组的结构,因为每个位置仅代表每个韩语字符的一部分。相反,您需要根据用于存储每个字符的字节数将字符串拆分为一个数组。反复试验得出韩语字符的字节长度为 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");

输出:

제드
제*

推荐阅读