如何使用PHP将阿拉伯字符转换为Unicode

时间:2011-05-30 10:21:14

标签: php html unicode ar-php

我想知道如何将单词转换为unicode,如下所示: http://www.arabunic.free.fr/

考虑到阿拉伯文本可能包含连字,

是否有人可以使用PHP知道如何做到这一点?

感谢

修改

我不确定那个“unicode”是什么,但我需要在它的等效机器编号中使用阿拉伯字符,因为阿拉伯字符根据其位置具有不同的上下文形式 - 请参阅此处:

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

不同位置的相同角色:

  

ب| ب| ب| ب

我认为它必须是将每个阿拉伯字符转换为它的等价数字的方法,但是如何?

修改

我仍然相信有一种方法可以根据位置将每个角色转换为它的形式

任何想法都表示赞赏..

6 个答案:

答案 0 :(得分:12)

您需要的所有功能都是:utf8Glyphs,您可以在ArGlyphs.class.php中找到它从ar-php下载 并访问Ar-PHP获取有关项目和类的更多有关项目和类的信息。

这将使用相同的字符(字形)反转该单词。

使用示例:

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

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

答案 1 :(得分:2)

只需将包含阿拉伯语文本的元素设置为“rtl”(从右到左),然后输入正确拼写的阿拉伯语,文本将以所有连线进行查找。

div { 方向:RTL; }

另外,请不要忘记阅读"The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)"

想一想:“ba”(ب)阿拉伯语字母无论在句子中出现的位置都是“ba”。

答案 2 :(得分:2)

我假设您想要将بهروز转换为\ u0628 \ u0628 \ u0348 \ u0632 \ u0632看看http://hsivonen.iki.fi/php-utf8/调用unicodeToUtf8('بهروز')之后你要做的就是转换你得到的整数数组到十六进制&amp;确保他们有4digigts&amp;前缀em与\ u&amp;你完成了。也可以使用json_encode

获得相同的效果
json_encode('بهروز') // returns "\u0628\u0647\u0631\u0648\u0632"

修改

似乎你想获得第一个与第二个不同的بب字符代码,你所要做的就是使用fribidi_log2vis在你的文本上应用bidi算法,然后通过我之前说过的方式获取字符代码。

这是一个例子:

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

修改

我只记得tcpdf有bidi算法,它使用纯php实现,所以如果你不能让php的fribidi扩展工作,你可以使用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)

答案 3 :(得分:0)

试试这个:

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

答案 4 :(得分:0)

我想你可以试试:

<meta charset="utf-8" />

如果这不起作用,请使用FloatBird Answer

答案 5 :(得分:0)

对于FloatBird的使用,我完全同意ar-php,正如他在FloatBird所说的那样,您会发现它的意思是,他们已经将版本4之后的类名从阿拉伯语 I18N_Arabic ,因此,为了使代码使用arabic.php ver 4.0,您需要将代码更改为

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

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

还要注意,您需要将php代码文件放入 I18N 文件夹中。

无论如何,它的运行都很出色,再次感谢{{3}}