Как преобразовать арабские символы в Unicode с помощью PHP

Я хочу знать, как преобразовать слово в unicode точно так же: http://www.arabunic.free.fr/

может ли кто-нибудь знать, как это сделать с использованием PHP, учитывая, что арабский текст может содержать лигатуры?

благодаря

редактировать

Я не уверен, что это «юникод», но мне нужно, чтобы арабский символ был эквивалентен номеру машины, учитывая, что арабские символы имеют разные контекстуальные формы в зависимости от их положения – см. Здесь:

http://en.wikipedia.org/wiki/Arabic_alphabet#Table_of_basic_letters

тот же символ в другом положении:

ب | ب | ب | ب

Я думаю, что это должен быть способ конвертировать каждый арабский символ в его эквивалентный номер, но как?

редактировать

Я все еще верю, что есть способ конвертировать каждого персонажа в его форму в зависимости от позиций

любая идея ценится.

Все, что вам нужно, это функция, называемая utf8Glyphs, которую вы можете найти в ArGlyphs.class.php, загрузите ее из ar-php и посетите Ar-PHP для ArPHP, чтобы получить дополнительную информацию о проекте и классах.

Это изменит слово с теми же символами (глифы).

Пример использования:

<?php include('Arabic.php'); $Arabic = new Arabic('ArGlyphs'); $text = 'بسم الله الرحمن الرحيم'; $text = $Arabic->utf8Glyphs($text); echo $text; ?> 

Просто установите элемент, содержащий арабский текст, в «rtl» (справа налево), затем введите правильно написанный арабский текст, и текст будет течь со всеми искаженными лигатурами.

div {направление: rtl; }

На стороне заметьте, не забудьте прочитать «Абсолютный минимум каждый разработчик программного обеспечения Абсолютно, положительно должен знать о юникоде и наборах символов (без отговорок!)»

Подумайте об этом: «ba» (ب) арабское письмо является «ba» независимо от того, где оно появляется в предложении.

Я предполагаю, что вы хотите конвертировать بهروز в \ u0628 \ u0647 \ u0631 \ u0648 \ u0632 посмотреть http://hsivonen.iki.fi/php-utf8/ все, что вам нужно сделать после вызова unicodeToUtf8 ('بهروز') для преобразования целых чисел, которые вы получили в массиве, в hex и убедитесь, что у них есть 4digigts & prefix em с \ u и все готово. также вы можете получить то же самое с помощью json_encode

 json_encode ('بهروز') // возвращает "\ u0628 \ u0647 \ u0631 \ u0648 \ u0632"

РЕДАКТИРОВАТЬ:

кажется, вы хотите получить коды символов بب, которые сначала отличаются от второго, все, что вам нужно сделать, это применить алгоритм bidi на вашем тексте, используя fribidi_log2vis, после чего получите код символа одним из способов, о которых я говорил ранее.

вот пример:

 $ string = 'بب';  // \ u0628 \ u0628
 $ bidiString = fribidi_log2vis ($ string, FRIBIDI_LTR, FRIBIDI_CHARSET_UTF8);
 json_encode ($ bidiString);  // \ ufe90 \ ufe91

РЕДАКТИРОВАТЬ:

я только что вспомнил, что tcpdf имеет биди алгоритм, который реализован с использованием чистого php, поэтому, если вы не можете получить расширение phryidi php для работы, вы можете использовать tcpdf (utf8Bidi по умолчанию защищен, поэтому вам нужно сделать его общедоступным)

 require_once ( 'utf8.inc');  // http://hsivonen.iki.fi/php-utf8/
 require_once ( 'tcpdf.php');  // http://www.tcpdf.org/
 $ t = новый TCPDF ();
 $ text = 'بب';
 $ T-> utf8Bidi (utf8ToUnicode ($ текста));  // вернет массив, подобный массиву (0 => 65168, 1 => 65169)

Попробуй это:

 <?php $string = 'a'; $expanded = iconv('UTF-8', 'UTF-32', $string); $arr = unpack('L*', $expanded); print_r($arr); ?> 

я думаю, вы могли бы попробовать:

 <meta charset="utf-8" /> 

если это не работает, используйте FloatBird Отвечать