У меня есть база данных MySQL с названиями книг на английском и арабском языках, и я использую класс PHP , который может автоматически транслитерировать арабский текст в латиницу.
Я бы хотел, чтобы мой выходной HTML выглядел примерно так:
<h3>A book</h3>
<h3>كتاب <em>(kitaab)</em></h3>
<h3>Another book</h3>
Есть ли способ для PHP определить язык строки на основе символов Unicode и используемых в ней глифов? Я пытаюсь получить что-то вроде этого:
$Ar = new Arabic('EnTransliteration');
while ($item = mysql_fetch_array($results)) {
...
if (some test to see if $item['item_title'] has Arabic glyphs in it) {
echo "<h3>$item[item_title] <em>(" . $Ar->ar2en($item['item_title']) . ")</em></h3>";
} else {
echo "<h3>$item[item_title]</h3>";
}
...
}
К счастью, класс не задыхается при вводе латинских символов, поэтому теоретически я мог бы посылать каждый результат через преобразование, но это кажется пустой тратой обработки.
Спасибо!
Edit:
Я до сих пор не нашел способ проверить глифы или символы. Я полагаю, я мог бы поместить все арабские символы в массив и проверить, соответствует ли что-либо в массиве какой-либо части строки ...
Я, однако, нашел временное решение, которое в итоге могло бы работать нормально. Он переводит каждый заголовок через преобразование независимо от языка, но выводит транслитерацию в скобках только в том случае, если строка была изменена:
while ($item = mysql_fetch_array($mysql_results)) {
$transliterate = trim(strtolower($Ar->ar2en($item['item_title'])));
$item_title = (strtolower($item['item_title']) == $transliterate) ? $item['item_title'] : $item['item_title'] . " <em>($transliterate)</em>";
echo "<h3>$item_title</h3>";
}