2015-09-25 2 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"); 
Смежные вопросы