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

Ron*_*onZ 3 php string hebrew non-english

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

我尝试使用strrev函数(和其他函数)来反转字符串,并且它有效 - 但如果它包含英文字母 - 我也会得到反转的英文字母。

有办法反转希伯来字母,但按原样保存英语单词吗?

小智 5

我写了以下解决方案:

\n\n
function reverseHebrew($text)\n{\n    $words = array_reverse(explode(\' \', $text));\n    foreach ($words as $index => $word) {\n        if (isHebrew($word)) {\n            $words[$index] = mbStrRev($word);\n        }\n    }\n    return join(\' \', $words);\n}\n\nfunction isHebrew($text)\n{\n    for ($i = 0, $cnt = strlen($text); $i < $cnt; ++$i) {\n        if (ord($text[$i]) > 127) {\n            return true;\n        }\n    }\n    return false;\n}\n\nfunction mbStrRev($string, $encoding = null) \n{\n    if ($encoding === null) {\n        $encoding = mb_detect_encoding($string);\n    }\n\n    $length   = mb_strlen($string, $encoding);\n    $reversed = \'\';\n    while ($length-- > 0) {\n        $reversed .= mb_substr($string, $length, 1, $encoding);\n    }\n\n    return $reversed;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

用法:

\n\n
echo reverseHebrew("\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d user");\n
Run Code Online (Sandbox Code Playgroud)\n