如何使用PHP将阿拉伯语字符转换为Unicode
我想知道如何将一个单词转换为unicode,就像: 考虑到阿拉伯语文本可能包含连字,有人知道如何使用PHP实现吗 谢谢 编辑 我不确定“unicode”是什么,但考虑到阿拉伯字符根据其位置具有不同的上下文形式,我需要在其等效机器编号中包含阿拉伯字符-请参见此处: 同一字符在不同位置: ب | ـب | ـبـ | بـ 我认为这一定是一种将每个阿拉伯字符转换成等价数字的方法,但如何转换呢 编辑 我仍然相信有一种方法可以根据位置将每个字符转换为它的形式 如有任何意见,我们将不胜感激 试试这个:如何使用PHP将阿拉伯语字符转换为Unicode,php,html,unicode,ar-php,Php,Html,Unicode,Ar Php,我想知道如何将一个单词转换为unicode,就像: 考虑到阿拉伯语文本可能包含连字,有人知道如何使用PHP实现吗 谢谢 编辑 我不确定“unicode”是什么,但考虑到阿拉伯字符根据其位置具有不同的上下文形式,我需要在其等效机器编号中包含阿拉伯字符-请参见此处: 同一字符在不同位置: ب | ـب | ـبـ | بـ 我认为这一定是一种将每个阿拉伯字符转换成等价数字的方法,但如何转换呢 编辑 我仍然相信有一种方法可以根据位置将每个字符转换为它的形式 如有任何意见,我们将不胜感
<?php
$string = 'a';
$expanded = iconv('UTF-8', 'UTF-32', $string);
$arr = unpack('L*', $expanded);
print_r($arr);
?>
只需将包含阿拉伯语文本的元素设置为“rtl”(从右到左),然后输入拼写正确的阿拉伯语,文本将与所有查找的连字一起流动 div{ 方向:rtl; } 顺便说一句,别忘了读
想想看:阿拉伯字母“ba”(ba)在句子中的任何位置都是“ba”。我想你应该把“ba”(ba)转换成\u0628\u0647\u0631\u0648\u0632。打电话给unicodeToUtf8(“unicodeToUtf8”)后,看看你要做的一切就是将数组中的整数转换为十六进制,并确保它们有4digigts,并在em前面加上\u前缀,这样就完成了。也可以使用json_encode获得相同的结果 json_encode('بهروز') // returns "\u0628\u0647\u0631\u0648\u0632" json_encode('u15766;هوز')//返回“\u0628\u0647\u0631\u0648\u0632” 编辑: 似乎你想得到第一个和第二个不同的字符码,你所要做的就是在你的文本上应用bidi算法,然后用我前面提到的方法之一得到字符码 下面是一个例子: $string = 'بب'; // \u0628\u0628 $bidiString = fribidi_log2vis($string, FRIBIDI_LTR, FRIBIDI_CHARSET_UTF8); json_encode($bidiString); // \ufe90\ufe91 $string='بب';//\u0628\u0628 $bidiString=fribidi\u log2vis($string,fribidi\u LTR,fribidi\u CHARSET\u UTF8); json_encode($bidiString);//\ufe90\ufe91 编辑: 我刚刚记得tcpdf有使用纯php实现的bidi算法,所以如果您无法让php的fribidi扩展正常工作,您可以使用tcpdf(默认情况下utf8Bidi是受保护的,所以您需要将其公开) 一次需要_('utf8.inc');//http://hsivonen.iki.fi/php-utf8/ 只需_一次('tcpdf.php');//http://www.tcpdf.org/ $t=新的TCPDF(); $text=‘بب’; $t->utf8Bidi(utf8ToUnicode($text));//将返回类似数组的数组(0=>65168,1=>65169)
您所需要的只是一个名为:utf8Glyphs的函数,您可以在ArGlyphs.class.php中找到它。请从下载该函数 并访问ArPHP了解有关项目和课程的更多信息 这将使用相同的字符(字形)反转单词 用法示例:
<?php
include('Arabic.php');
$Arabic = new Arabic('ArGlyphs');
$text = 'بسم الله الرحمن الرحيم';
$text = $Arabic->utf8Glyphs($text);
echo $text;
?>
我想你可以试试:
<meta charset="utf-8" />
如果这不起作用,请使用FloatBird答案我完全同意使用arabic.php,正如他在,问题是,他们已经将第4版之后的类名从阿拉伯语更改为I18N_阿拉伯语,因此为了让代码使用Arabic.php 4.0版工作,您需要将代码更改为
<?php
include('Arabic.php');
$Arabic = new I18N_Arabic('ArGlyphs');
$text = 'بسم الله الرحمن الرحيم';
$text = $Arabic->utf8Glyphs($text);
echo $text;
?>
还要注意,您需要将php代码文件放在I18N文件夹中
不管怎样,它工作得非常好,再次感谢你说的“Unicode”到底是什么意思。“Unicode”是一个几乎没有实际用途的字符集。你是说像UTF-8或UTF-16这样的字符编码吗?你想从中转换什么?您提供的页面上的小程序创建的也不是真正的“Unicode”,而是JavaScript Unicode转义序列,如果您使用UTF-8或-16.0,则不需要这些转义序列。很抱歉,我没有告诉你我想做什么。实际上,我想使用javascript swfobject在flash中使用阿拉伯语单词,但不幸的是,单词以片段和ltr的形式显示。我使用strev function检查了第二个问题“ltr”,但单词仍然是片段,即使使用指定rtl方向的类;我不能说这不是我问题的正确答案,所以如果你知道这种情况,你可以告诉我:)+1对于链接,Al3bed将能够用这些信息更好地表述问题……好吧,谢谢你的回答,但我认为utf8.inc在任何服务器上都不可用+我不知道如何使用它!json_encode为字符赋予相同的值,无论字符在单词中的位置如何。如果你看到上面的链接,当你勾选阿拉伯文连字框时,你会看到每个词的音量都不同——例如“ننن”是同一个字符,但它显示为“uFEE7\uFEE8\uFEE6”,我怎么知道如何获得这些+如何再次转换成阿拉伯文?你认为unicodeToUtf8会成功吗?你所需要做的就是在获得字符代码之前应用bidi算法,我已经编辑了答案:)我没有成功安装fribidi。utf8ToUnicode是一个很好的函数,我认为他们需要将它添加到PHP6中。这很有趣。然而,从阿拉伯语到utf-8,我都获得了同等的权利。。只是我需要的方式,我可以改变编码到windows-1256和所有的工作:)thxOutput将是有用的什么是最好的使用iconv或mb_转换_编码?阿拉伯语的编码是什么?假设我已经有了UTF-8内容。
<?php
include('Arabic.php');
$Arabic = new I18N_Arabic('ArGlyphs');
$text = 'بسم الله الرحمن الرحيم';
$text = $Arabic->utf8Glyphs($text);
echo $text;
?>