php | обратная строка на иврите, но без обратных английских букв

Я хотел бы напечатать строку на изображении с imagettftext функция, но у меня есть одна проблема — текст на иврите и отображается как обратный.

Я пытался с помощью strrev Функция (и другие), чтобы перевернуть строку, и это работает — но если в нем есть английские буквы — я получаю и обратные английские буквы.

Есть способ перевернуть буквы иврита, но сохранить английские слова такими, какие они есть?

2

Решение

Я написал следующее решение:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]