2
我想用imagettftext
函數在圖像上打印字符串,但我遇到了一個問題 - 文本是希伯來語並顯示爲反向。php |反向希伯來語字符串,但沒有反向英文字母
我嘗試使用strrev
函數(和其他)來反轉字符串,它的工作原理 - 但如果其中有英文字母 - 我也會得到反轉的英文字母。
有一種方法可以將希伯來字母反轉,但將英文單詞保存爲原樣?
我想用imagettftext
函數在圖像上打印字符串,但我遇到了一個問題 - 文本是希伯來語並顯示爲反向。php |反向希伯來語字符串,但沒有反向英文字母
我嘗試使用strrev
函數(和其他)來反轉字符串,它的工作原理 - 但如果其中有英文字母 - 我也會得到反轉的英文字母。
有一種方法可以將希伯來字母反轉,但將英文單詞保存爲原樣?
我寫了以下解決方案:
function reverseHebrew($text)
{
$words = array_reverse(explode(' ', $text));
foreach ($words as $index => $word) {
if (isHebrew($word)) {
$words[$index] = mbStrRev($word);
}
}
return join(' ', $words);
}
function isHebrew($text)
{
for ($i = 0, $cnt = strlen($text); $i < $cnt; ++$i) {
if (ord($text[$i]) > 127) {
return true;
}
}
return false;
}
function mbStrRev($string, $encoding = null)
{
if ($encoding === null) {
$encoding = mb_detect_encoding($string);
}
$length = mb_strlen($string, $encoding);
$reversed = '';
while ($length-- > 0) {
$reversed .= mb_substr($string, $length, 1, $encoding);
}
return $reversed;
}
用法:
echo reverseHebrew("שלום user");
希伯來文是一個RTL語言 – ElGavilan
http://php.net/manual/en/function.hebrevc.php? – PeeHaa