首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序印地语字符

问排序印地语字符
EN

Stack Overflow用户
提问于 2012-09-04 05:19:55
回答 2查看 2.5K关注 0票数 3

我有一个页面,按字母顺序呈现一个关键字目录(A,B,C,D...Z,0,1...9),其中一些关键字是印地语(天成文书)。

我的php代码遍历字母表数组,按第一个字母对关键字进行排序,并呈现每个字母的列以及以相同字母/数字开头的所有相应关键字。

我的问题是对印地语字母数组进行排序。我的数组是:

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

例如,我希望对以下关键字进行排序:एशियाखानापकानाफोटोग्राफीभारतीयमसालाविध

我已经尝试了一些方法,但没有成功,我正在将印地语关键字呈现在" hindi“列下,并且是无序的。

有没有办法用php对印地语字符进行排序?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-04 05:52:29

我假设由于某种原因,正常的排序不起作用(印地语字符在几种语言之间共享,对吗?)下面是如何根据用户定义的字符顺序进行排序

如果第一个字母匹配,则需要使用usort()并递归调用来比较下一个字母-如下所示

代码语言:javascript
复制
$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

“纳加里语被几种印度语言使用,包括梵语、印地语、马拉提语、帕哈里语(加赫瓦利语和库毛尼语)、尼泊尔语、宾利语、康卡尼语、波吉普里语、马加希语、库鲁克语、尼泊尔巴萨语和信德语。有时用于书写或音译夏尔巴语和克什米尔语。以前用于书写古吉拉特语。”

票数 2
EN

Stack Overflow用户

发布于 2012-09-04 05:33:07

您可以使用sort

代码语言:javascript
复制
sort($keywords, SORT_NATURAL);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12254132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档