【发布时间】:2014-05-31 23:40:31
【问题描述】:
我想用imagettftext()从右到左而不是从左到右写一个文本字符串;功能
我在手册中看到角度变量控制这个,它说 0 角度意味着从左到右,所以我尝试了 180、360 但没有任何反应
我需要把它放在什么角度才能让它从右到左写
我正在编写一个带有支持希伯来字符的 font.ttf 的希伯来文本字符串
<?php
$white = imagecolorallocate($background, 255, 255, 255);
$fontfile = "davidtr.ttf";
$string = "מחלדגכ";
imagettftext($background, 12, 360, 3, 17, $white, $fontfile, $string);
?>
我也用过这个函数strrev(),
$white = imagecolorallocate($background, 255, 255, 255);
$fontfile = "davidtr.ttf";
$string = strrev("עברית");
//imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function');
imagettftext($background, 12, 0, 3, 17, $white, $fontfile, $string);
现在图像上的文字被搞砸了,一些字母是白框
然后我使用了这个功能:
function utf8_strrev($str){
preg_match_all('/./us', $str, $ar);
return join('',array_reverse($ar[0]));
}
它帮了我很多,但现在它也反转了整数
$string = "מחל 65 דגכ";
echo utf8_strrev($string);
//Now string revered but 65 converted to 56
您能否给我一个更好的解决方案,只有希伯来字符会反转,而不是整数?
【问题讨论】:
-
我从来都不擅长正则表达式;我更像是一个“遍历字符串”的人。但这个概念似乎是这样的:使用你的函数 utf8_strrev 来反转整个事情,然后在字符串中隔离每个连续的数字字符串并将 utf8_strrev 应用于它们(在字符串内)。我可以通过循环轻松地做到这一点,但我可能会得到一堆反对票。 ;)
标签: php imagettftext