2015-09-25 4 views
2

Je voudrais imprimer une chaîne sur l'image avec la fonction imagettftext, mais j'ai un problème - le texte est en hébreu et montré comme l'inverse.php | chaîne hébreu inverse, mais sans lettres anglaises

J'ai essayé d'utiliser la fonction strrev (et d'autres) pour inverser la chaîne, et cela fonctionne - mais si elle a des lettres anglaises - j'obtiens aussi des lettres anglaises inversées.

Il existe un moyen d'inverser les lettres hébraïques, mais en sauvegardant les mots anglais tels qu'ils sont?

+1

hébreu est une langue RTL – ElGavilan

+0

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

Répondre

-1

j'ai écrit solution suivante:

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; 
} 

Utilisation:

echo reverseHebrew("שלום user");