2015-09-25 114 views
2

我想用imagettftext函数在图像上打印字符串,但我遇到了一个问题 - 文本是希伯来语并显示为反向。php |反向希伯来语字符串,但没有反向英文字母

我尝试使用strrev函数(和其他)来反转字符串,它的工作原理 - 但如果其中有英文字母 - 我也会得到反转的英文字母。

有一种方法可以将希伯来字母反转,但将英文单词保存为原样?

+1

希伯来文是一个RTL语言 – ElGavilan

+0

http://php.net/manual/en/function.hebrevc.php? – PeeHaa

回答

-1

我写了以下解决方案:

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");