Как я могу писать арабские или персидские символы для изображения с помощью библиотеки PHP GD?
т.е. "احسان"
Используйте эту функцию для передачи текста в imagettftext
<?php function revUni($text) { $wordsArray = explode(" ", $text); $rtlCompleteText=''; for ($i = sizeOf($wordsArray); $i > -1; $i = $i-1) { //$lettersArray = explode("|", str_replace(";|", ";", $wordsArray[$i])); $lettersArray = explode(";", $wordsArray[$i]); $rtlWord=''; for ($k = sizeOf($lettersArray); $k > -1; $k = $k-1) { if (strlen($lettersArray[$k]) > 1) { // make sure its full unicode letter $rtlWord = $rtlWord."".$lettersArray[$k].";"; } } $rtlCompleteText = $rtlCompleteText." ".$rtlWord; } return $rtlCompleteText; } ?>
Попробуйте использовать imagettftext.
<?php // http://localhost/test.php?text=احسان // test.php file $font = 'C:/Windows/Fonts/Arial.ttf'; $text = $_GET['text']; // [switch to right to left] // try comparing of using this block and not using this block $rtl = array(); for($i=0; $i<strlen($text); $i+=2) { $rtl[] = substr($text, $i, 2); } $rtl = array_reverse($rtl); $rtl = implode($rtl); $text = $rtl; // [/switch to right to left] $im = imagecreatetruecolor(65, 35); $black = imagecolorallocate($im, 0, 0, 0); $white = imagecolorallocate($im, 255, 255, 255); imagefilledrectangle($im, 0, 0, 500, 100, $white); imagettftext($im, 12, 0, 10, 20, $black, $font, $text); header('Content-type: image/png'); imagepng($im); imagedestroy($im);
Простое обращение арабских символов, таких как массив, просто не сработает . Вам нужно учитывать арабские глифы и подставлять каждый символ Юникода. см. здесь аналогичный вопрос и решение: ошибка при написании арабского изображения
Я написал композиционный пакет на основе библиотеки, я не помню имя. Я модифицировал библиотеку и исправил некоторые ошибки.
Здесь вы можете найти источник. и вы также можете установить его с помощью композитора, выполнив:
composer require quince/persian-gd
Пожалуйста, проверьте его и отправьте отчеты об ошибках, предложения и …
благодаря