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

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

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

спасибо

Edit

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

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

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

ب | ب | ب | ب

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

Edit

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

любая идея оценена.

Ответ 1

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

Это приведет к обратному изменению слова с его символами (глифами).

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

    <?php
    include('Arabic.php');
    $Arabic = new Arabic('ArGlyphs');

    $text = 'بسم الله الرحمن الرحيم';
    $text = $Arabic->utf8Glyphs($text);
    echo $text;
    ?>

Ответ 2

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

div { Направление: РТЛ; }

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

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

Ответ 3

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

json_encode('بهروز') // returns "\u0628\u0647\u0631\u0648\u0632"

EDIT:

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

здесь пример:

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

EDIT:

Я только что вспомнил, что 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 = new TCPDF();
$text = 'بب';
$t->utf8Bidi(utf8ToUnicode($text)); // will return an array like array(0 => 65168, 1 => 65169)

Ответ 4

Попробуйте следующее:

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

Ответ 5

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

<meta charset="utf-8" />

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