2015-09-25 63 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");