我很难从一些$string
中删除音调符号。我的代码是
<?php
$string = "Příliš žluťoučký kůň úpěl ďábelské ódy.";
$without_diacritics = strTr($string, "říšžťčýůúěďó", "risztcyuuedo");
echo $without_diacritics;
而预期产量将
Prilis zlutoucky kun upel dabelske ody.
相反,我收到了非常奇怪的回应:
Puiszliuc uuluueoudoks� ku�u� s�pd�l d�scbelsks� s�dy.
我认为多字节字符可能有问题,但我发现
strtr
是多字节安全的。我的假设错了吗?我错过了什么? 最佳答案
问题是,您的输入转换字符串是输出转换字符串的两倍大(因为Unicode),并且strtr()
使用字节而不是字符;在这种情况下,转换数组会更好:
$string = "Příliš žluťoučký kůň úpěl ďábelské ódy.";
echo strtr($string, [
'ř' => 'r',
'í' => 'i',
'š' => 's',
'ž' => 'z',
'ť' => 't',
'č' => 'c',
'ý' => 'y',
'ů' => 'u',
'ú' => 'u',
'ě' => 'e',
'ď' => 'd',
'ó' => 'o'
]);
输出:
Prilis zlutoucky kuň upel dábelské ody.
Demo