Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP将阿拉伯语字符转换为Unicode_Php_Html_Unicode_Ar Php - Fatal编程技术网

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

如何使用PHP将阿拉伯语字符转换为Unicode,php,html,unicode,ar-php,Php,Html,Unicode,Ar Php,我想知道如何将一个单词转换为unicode,就像: 考虑到阿拉伯语文本可能包含连字,有人知道如何使用PHP实现吗 谢谢 编辑 我不确定“unicode”是什么,但考虑到阿拉伯字符根据其位置具有不同的上下文形式,我需要在其等效机器编号中包含阿拉伯字符-请参见此处: 同一字符在不同位置: ب‎ | ـب‎ | ـبـ‎ | بـ‎ 我认为这一定是一种将每个阿拉伯字符转换成等价数字的方法,但如何转换呢 编辑 我仍然相信有一种方法可以根据位置将每个字符转换为它的形式 如有任何意见,我们将不胜感

我想知道如何将一个单词转换为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;
?>