Ron*_*onZ 3 php string hebrew non-english
我想使用imagettftext函数在图像上打印一个字符串,但我遇到了一个问题 - 文本是希伯来语并且显示为反向。
我尝试使用strrev函数(和其他函数)来反转字符串,并且它有效 - 但如果它包含英文字母 - 我也会得到反转的英文字母。
有办法反转希伯来字母,但按原样保存英语单词吗?
小智 5
我写了以下解决方案:
\n\nfunction 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}\nRun Code Online (Sandbox Code Playgroud)\n\n用法:
\n\necho reverseHebrew("\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d user");\nRun Code Online (Sandbox Code Playgroud)\n