Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将if与希伯来文字母进行比较_Php_Hebrew - Fatal编程技术网

Php 将if与希伯来文字母进行比较

Php 将if与希伯来文字母进行比较,php,hebrew,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

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

守则:

<?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";
?>
干得好。 但守则:

<?php
$idan="אבהבה";
$firstletter = mb_substr($idan, 0, 1, 'UTF-8');
if ($firstletter=='א') 
echo "tov";
else echo "lo tove";
?>
不工作,我怎么能修复它?

你知道mb_substr从左到右工作吗?希伯来语是从右向左写的吗?因此,您正在阅读的第一个字符不是。要从右侧获取第一个字母(即最后一个字母),请使用-1作为起始索引:

$firstletter = mb_substr($idan, -1, 1, 'UTF-8');
您还可以使用mb_内部编码UTF-8;为每个调用设置编码,而不是在多次调用mb_u函数时传播它

编辑:根据您的评论,下面是一个根据语言处理字母的脚本的快速示例:

$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";
你知道mb_substr是从左到右工作的吗?希伯来语是从右向左写的吗?因此,您正在阅读的第一个字符不是。要从右侧获取第一个字母(即最后一个字母),请使用-1作为起始索引:

$firstletter = mb_substr($idan, -1, 1, 'UTF-8');
您还可以使用mb_内部编码UTF-8;为每个调用设置编码,而不是在多次调用mb_u函数时传播它

编辑:根据您的评论,下面是一个根据语言处理字母的脚本的快速示例:

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

您的代码工作正常,例如,当我将其保存到PHP文件并运行时,将其打印到V。如果看到不同的结果,您可能需要检查文本编辑器设置,并确保将文件保存为UTF-8。

您的代码工作正常,例如,当我将其保存到PHP文件并运行时,将其打印到V。如果您看到不同的结果,您可能需要检查文本编辑器设置,并确保将文件保存为UTF-8。

您能发布收到的错误吗?这是一个Unicode问题,而不是希伯来语问题。我不明白错误,我得到了lo tove,但它需要是你能发布你收到的错误吗?这是一个Unicode而不是希伯来语的问题。我没有得到错误,我得到了lo tove,但它需要是tovand,如果我需要在脚本中也与英语单词进行比较的话?PHP字符串总是从左到右工作,因此0将是最左边的字符,-1是最右边的字符。你需要知道你要找哪个字母才能使用正确的索引英语/希伯来语我需要两者。。。有时变量希伯来语,有时在英语中,希伯来语文本始终显示为RTL。尽管显示在字符串的右端,但א是第一个字符。如果我还需要在脚本中与英语单词进行比较,PHP字符串总是从左向右运行,因此0将是最左边的字符,-1是最右边的字符。你需要知道你要找哪个字母才能使用正确的索引英语/希伯来语我需要两者。。。有时变量希伯来语,有时在英语中,希伯来语文本始终显示为RTL。尽管显示在字符串的右端,但א是第一个字符。+1应该运行代码,我假设是左/右问题,因为我以前从未处理过那种语言+1应该运行代码,我假设是左/右问题,因为我以前从未处理过那种语言