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

新手上路,请多包涵

我想知道如何将单词完全转换为 unicode: http ://www.arabunic.free.fr/

考虑到阿拉伯语文本可能包含连字,谁能知道如何使用 PHP 做到这一点?

谢谢

编辑

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

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

不同位置的相同字符:

�| | ـب | ـبـ | �

我认为这一定是一种将每个阿拉伯字符转换为等效数字的方法,但是如何呢?

编辑

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

任何想法表示赞赏..

原文由 Al3bed 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 454
2 个回答

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

这将反转具有相同字符(字形)的单词。

使用示例:

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

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

原文由 FloatBird 发布,翻译遵循 CC BY-SA 3.0 许可协议

我假设你想将 بهروò 转换为 \u0628\u0647\u0631\u0648\u0632 看看 http://hsivonen.iki.fi/php-utf8/ 在调用 unicodeToUtf8(‘بهروò’) 之后你需要做的就是将数组中的整数转换为十六进制并确保它们有 4 位数字并在 em 前加上 \u & 你就完成了。你也可以使用 json_encode 得到相同的

json_encode('بهروò') // 返回“\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 有使用纯 php 实现的 bidi 算法,所以如果你不能让 php 的 fribidi 扩展工作,你可以使用 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($text)); // 将返回一个类似 array(0 => 65168, 1 => 65169) 的数组

原文由 everplays 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题