2

英字のみで動作するコードを書きます。ヘブライ文字でやろうとすると、エラーが発生します。

コード:

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

動作しません。どうすれば修正できますか?

4

2 に答える 2

3

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";
于 2012-12-13T21:42:14.067 に答える
1

コードを PHP ファイルに保存して実行すると、コードが正しく機能しました (例:印刷)。tov異なる結果が表示される場合は、テキスト エディターの設定を確認し、ファイルが UTF-8 として保存されていることを確認してください。

于 2012-12-15T07:25:11.480 に答える