比较是否与希伯来字母

时间:2012-12-13 21:28:20

标签: php hebrew

我编写的代码只能使用英文字母。当我试着用希伯来字母做这件事时,我得到了错误。

代码:

<?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";
?>

无法正常工作,我该如何解决?

2 个答案:

答案 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。

相关问题