加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 将阿拉伯语写入图像时出错

发布时间:2020-12-13 16:40:35 所属栏目:PHP教程 来源:网络整理
导读:我以前的相关问题: php work with images : write complete word in arabic,ttf font 我的问题是: 如果我想在图像中写入????,它会显示为???? 嗯,我修好了,现在输出:???? 使用此功能: function arab($word){ $w = explode(' ',$word) ; $f = array(array(
我以前的相关问题:

php work with images : write complete word in arabic,ttf font

我的问题是:

>如果我想在图像中写入????,它会显示为????
嗯,我修好了,现在输出:????

使用此功能:

function arab($word){

       $w = explode(' ',$word) ;

       $f = array(array('?','?'),'?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?');

       $t = array(array('?_','?_'),'?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_','?_');

       $my_arab = '' ;

       foreach($w as $wo)
        {
             $r  = array() ;

             $wo = str_replace($f,$t,$wo);

             $ne = explode('_',$wo) ;

             foreach($ne as $new) {
                $new = str_replace('_','',$new) ;
                array_unshift($r,$new);
             }

            $my_arab .=  ' '.implode('',$r) ;

        }

     return trim($my_arab) ;

}

但新问题是:

???

(分开的字母)应该是:

????

如何解决这个问题?

你的倒转阿拉伯字符的方式没有考虑到连接字形的本质.
但是,解决PHP / GD不能自动支持RTL语言(如阿拉伯语)的问题是一个有效的手段.

您需要做的是使用完全符合您预期的ar-php库.

确保您的PHP文件编码是unicode / UTF.
例如>打开记事本>另存为>编码为UTF-8:

使用imagettftext在PHP中使用阿拉伯语排版的示例:

<?php 
    // The text to draw
    require('./I18N/Arabic.php'); 
    $Arabic = new I18N_Arabic('Glyphs'); 
    $font = './DroidNaskh-Bold.ttf';
    $text = $Arabic->utf8Glyphs('???? ??????');

    // Create the image
    $im = imagecreatetruecolor(600,300);

    // Create some colors
    $white = imagecolorallocate($im,255,255);
    $grey = imagecolorallocate($im,128,128);
    $black = imagecolorallocate($im,0);
    imagefilledrectangle($im,599,299,$white);

    // Add the text
    imagettftext($im,50,90,$black,$font,$text);

    // Using imagepng() results in clearer text compared with imagejpeg()
    imagepng($im,"./output_arabic_image.png");
    echo 'open: ./output_arabic_image.png';
    imagedestroy($im); 
?>

输出:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读