Intereting Posts
Как использовать php для извлечения всего имени файла в определенной папке Как я могу изменить свой код для эхо-данных данных элемента child, где был найден мой поисковый запрос, в XMLReader? Добавление продукта в корзину с пользовательской информацией и ценой Преобразование данных из заголовка электронной почты Лучший способ перенаправить одну страницу php для мобильных устройств с помощью PHP / Javascript PHP-массив из YAML с Symfony PHP XMLReader читает, редактирует узел, пишет XMLWriter Как показать последнее время входа (год, месяц, неделя, день, время, секунда) .. я попытался, но неправильный вывод php echo проверено из базы данных Греческая кодировка символов работает в HTML, но не в PHP Что такое хорошие распределенные диспетчера очереди в php? Неопределенная переменная: _SESSION при отправке переменных через сообщение через триггер JavaScript Mysqli на WAMP, попытка подключения к ошибке не выполнена Ошибка анализа: синтаксическая ошибка, неожиданный конец файла Обслуживание json-файла для приложения IPHONE

Проверьте язык строки на основе глифов в PHP

У меня есть база данных 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>"; } ... } 

К счастью, класс не задыхается при подаче латинских символов, поэтому теоретически я могу отправить каждый результат через трансформацию, но это кажется пустой тратой обработки.

Благодаря!

Изменить: я до сих пор не нашел способ проверить глифы или символы. Полагаю, я мог бы поместить все арабские символы в массив и проверить, соответствует ли что-либо в массиве части строки …

Тем не менее, я выяснил временное решение, которое могло бы отлично работать в конце. Он переводит каждый заголовок через преобразование независимо от языка, но выводит только строчную транслитерацию, если строка была изменена:

 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>"; } 

Solutions Collecting From Web of "Проверьте язык строки на основе глифов в PHP"

Это должно сделать это:

 preg_match("/\p{Arabic}/u", $item['item_title']) 

Вы можете сделать это регулярное выражение немного более сложным, если хотите, но я не думаю, что вам действительно нужно.

Управляющая последовательность \p позволяет вам выбирать символы на основе их свойств Unicode (когда используется модификатор u шаблона ).

В руководстве PHP упоминается: «Расширенные свойства, такие как« греческий »или« InMusicalSymbols », не поддерживаются PCRE». Но это не совсем так. В выпуске PCRE 6.5 добавлена ​​поддержка имен скриптов .

Вот класс с открытым исходным кодом PHP для автоматического обнаружения арабского набора символов:

http://www.ar-php.com/php/arabic/index.html#ArCharsetD