Я хочу реализовать простую транслитерацию на арабском и английском языках. Я определил массив отображения как следующее:PHP: арабские символы как ключи массива
$mapping = array('ﺏ' => 'b', 'ﺕ' => 't', ...)
Я ожидал следующий код для преобразования арабской строки в соответствующей транслитерацию
$str = "رضي الدين";
$strlen = mb_strlen($str, "UTF-8");
for($i = 0; $i <= $strlen; $i++) {
$char = mb_substr($str, $i, 1, "UTF-8");
echo bin2hex($char); // 'd8b1' for ﺭ
// echo $mapping["$char"];
}
Но $char
не соответствует ключам. Как это можно решить?
Исходный код загружен в UTF-8.
EDIT
Когда я bin2hex()
на каждой клавише $mapping
я получаю значения различных чем я получаю с соответствующими $char
. Например, для ﺭ
я получаю efbaad
и d8b1
. Они явно не совпадают, и они не конвертируются.
foreach ($mapping as $k => $v) {
echo $k . ' ' . bin2hex($k) . '<br>'; // 'efbaad' for ﺭ
}
Только «ي» получает те же значения и преобразуется.
Я не знаю, в чем проблема!
EDIT2
This chart фактически показывает, что оба этих кодов обратитесь к ﺭ
Спасибо! Я думаю, что есть еще одна проблема с моей средой, так как ваш код выводит то же самое, что и в моем коде. Только 'ي' соответствует и преобразуется в' i' –
@ Аффан, что я знаю арабский язык _very_ basic :) –