php |反向希伯来字符串,但没有反向英文字母

时间:2015-09-25 13:32:34

标签: php string hebrew non-english

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

我尝试使用strrev函数(以及其他函数)来反转字符串,它可以正常工作 - 但如果它中有英文字母 - 我也会收到反转的英文字母。

有一种方法可以反转希伯来字母,但保存英文字样不是吗?

1 个答案:

答案 0 :(得分: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");