我通过将字符串更改为 JSON 来解决此问题,然后将所有波兰特殊符号替换为 HTML 代码。我在我的结果下面添加:
$specialChars = [
'\u0105', # ą
'\u0107', # ć
'\u0119', # ę
'\u0142', # ł
'\u0144', # ń
'\u00f3', # ó
'\u015b', # ś
'\u017a', # ź
'\u017c', # ż
'\u0104', # Ą
'\u0106', # Ć
'\u0118', # Ę
'\u0141', # Ł
'\u0143', # Ń
'\u00d3', # Ó
'\u015a', # Ś
'\u0179', # Ż
'\u017b', # Ż
];
$polishHtmlCodes = [
'ą', # ą
'ć', # ć
'ę', # ę
'ł', # ł
'ń', # ń
'ó', # ó
'ś', # ś
'ź', # ź
'ż', # ż
'Ą', # Ą
'Ć', # Ć
'Ę', # Ę
'Ł', # Ł
'Ń', # Ń
'Ó', # Ó
'Ś', # Ś
'Ź', # Ż
'Ż', # Ż
];
$result = str_replace($specialChars, $polishHtmlCodes, json_encode($string));
var_dump(json_decode($result));
// prints
// e.g. 'Różowe okulary'