3

キーワードのディレクトリ (A、B、C、D....Z、0、1...9) をアルファベット順にレンダリングするページがあり、キーワードの一部はヒンディー語 (デバナーガリー) です。

私のphpコードはアルファベット配列を調べ、最初の文字でキーワードをソートし、同じ文字/数字で始まるすべての対応するキーワードを含む各文字の列をレンダリングします.

私の問題は、ヒンディー語のアルファベット配列をソートすることです。私の配列は次のとおりです。

$hindi=array('क','ख','ग','घ','ङ','च','छ','ज','झ','ञ','ट','ठ','ड','ढ','ण','त','थ','द','ध','न','प','फ','ब','भ','म','य','र','ल','व','श','ष','स','ह','ळ','क','ष','ज्','ञ');

たとえば、並べ替えたい次のキーワードがあります。

私はいくつかのアプローチを試してみましたが成功しませんでした。ヒンディー語のキーワードを「ヒンディー語」列のすぐ下に並べて表示しています。

PHPを使用してヒンディー語の文字をソートする方法はありますか?

4

2 に答える 2

2

何らかの理由で通常の並べ替えが機能しないと思います (ヒンディー語の文字はいくつかの言語で共有されていますよね?) ユーザー定義の文字順序に基づいて並べ替える方法は次のとおりです。

最初の文字が一致する場合は、次の文字を比較するために usort() を呼び出して再帰的に呼び出す必要があります-このように

$words = explode(' ', "एशिया खाना पकाना फोटोग्राफी भारतीय मसाला विध");
usort($words, 'hindiCmp');

function hindiCmp($a, $b) {
    $hindi=array('क','ख','ग','घ','ङ','च','छ','ज','झ','ञ','ट','ठ','ड','ढ','ण','त','थ','द','ध','न','प','फ','ब','भ','म','य','र','ल','व','श','ष','स','ह','ळ','क','ष','ज्','ञ');
    $a1 = array_search(substr($a, 0, 1), $hindi); // first letter of a
    $b1 = array_search(substr($b, 0, 1), $hindi); // first letter of b
    if ($a1 < $b1) {
        return 1;
    } elseif ($a1 > $b1) {
        return -1;
    } else {
        if ((strlen($a) <= 1) && (strlen($b) <= 1)) { //end of both strings?
            return 0; // then it's an exact match
        } else { // otherwise compare the next characters
            return hindiCmp(substr($a, 1), substr($b, 1));
        }
    } 
}

編集 - 好奇心旺盛な方のために - http://en.wikipedia.org/wiki/Nagari

「[ながりは] サンスクリット語、ヒンディー語、マラーティー語、パハリ語 (Garhwali と Kumaoni)、ネパール語、ビリ語、コンカニ語、ボージュプリー語、マガヒ語、クルク語、ネパール バサ語、シンド語など、いくつかのインドの言語で使用されています。シェルパ語を書いたり音訳したりするために使用されることもあります。以前はグジャラート語を書いていました。」

于 2012-09-03T21:52:28.973 に答える
0

並べ替えを使用できます:

sort($keywords, SORT_NATURAL);
于 2012-09-03T21:33:07.340 に答える