我编写的代码只能使用英文字母。当我试着用希伯来字母做这件事时,我得到了错误。
代码:
<?php
$idan="emr";
$firstletter = mb_substr($idan, 0, 1, 'UTF-8');
if ($firstletter=='e')
echo "tov";
else echo "lo tove";
?>
工作得很好。 但代码:
<?php
$idan="אבהבה";
$firstletter = mb_substr($idan, 0, 1, 'UTF-8');
if ($firstletter=='א')
echo "tov";
else echo "lo tove";
?>
无法正常工作,我该如何解决?
答案 0 :(得分:2)
您是否意识到mb_substr
从左到右工作? (希伯来文是从右到左书写的吗?)因此,您正在阅读ה
而不是א
的第一个字符。要从右边(最后一个)获取第一个字母,请使用-1
作为起始索引:
$firstletter = mb_substr($idan, -1, 1, 'UTF-8');
您还可以使用mb_internal_encoding("UTF-8");
为每个调用设置编码,而不是传播它(如果您对mb_
函数进行多次调用)
编辑:根据您的评论,以下是根据语言处理字母的脚本的快速示例:
$desiredLetter = 'e';
$startIndex = 0;
// some condition to figure out the language
if(mb_detect_encoding($idan, 'ASCII', true) == FALSE)
{
$desiredLetter = 'א';
$startIndex = -1;
}
$firstletter = mb_substr($idan, $startIndex, 1, 'UTF-8');
if ($firstletter == $desiredLetter)
echo "tov";
else
echo "lo tove";
答案 1 :(得分:1)
当我将代码保存到PHP文件并运行它时,您的代码正常工作(例如打印tov
)。如果您看到不同的结果,您可能需要检查文本编辑器设置并确保将文件保存为UTF-8。