如何在使用PHP时将印地语字符串拆分为数组,并计算字符串中的字母和元音字母数量。

3

我有类似这样的东西:

$a = "बिक्रम"

我希望实现类似于php的功能

a[0] = बि 
a[1] = क्र 
a[3] = म

now i want to count the letter of hindi name in a varial and how many vowel in hindi name(string). how to break hindi string in array with php and count how many letter and vowel in string Index page

<html>

<head>
  <script src="http://www.hinkhoj.com/common/js/keyboard.js"></script>
  <link rel="stylesheet" type="text/css" href="http://www.hinkhoj.com/common/css/keyboard.css" />
</head>

<body align="center" style="margin-top:15%">
  Name :&nbsp;&nbsp;&nbsp;&nbsp;
  <script language="javascript">
    CreateCustomHindiTextBox("nameid", "", 40, true);

    function ff() {
      var a = document.getElementById("nameid").value;
      var xmlhttp;
      if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
      } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
          document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
        }
      }

      xmlhttp.open("GET", "demo_get.php?val=" + a, true);
      xmlhttp.send();

    }
  </script>

  <input type="submit" name="submit" onClick="ff()">

  <div id="myDiv"></div>
</body>

</html>

ajax page

<?php

function mbStringToArray ($string) {
    $strlen = mb_strlen($string);
    while ($strlen) {
        $array[] = mb_substr($string,0,1,"UTF-8");
        $string = mb_substr($string,1,$strlen,"UTF-8");
        $strlen = mb_strlen($string);
    }
    return $array;
} 
echo $name = $_GET['val'];

print_r(mbStringToArray($name));


?>


使用 echo $a[0]echo $a[1] ... 或者使用 explode("", $a) - vaso123
这三个字符的 Unicode 编码可以获取到吗? - codeaken
1个回答

3
一个方法但不能按照所述精确输出。
<?php
function mbStringToArray ($string) {
    $strlen = mb_strlen($string);
    while ($strlen) {
        $array[] = mb_substr($string,0,1,"UTF-8");
        $string = mb_substr($string,1,$strlen,"UTF-8");
        $strlen = mb_strlen($string);
    }
    return $array;
} 
$a = "बिक्रम";
print_r(mbStringToArray($a));

输出:

数组([0] => ब [1] => ि [2] => क [3] => ् [4] => र [5] => म)

您可以创建一个函数,该函数迭代由 mbStringToArray() 返回的数组,如果下一个元素等于一个 Varnamala(वर्णमाला),如 ि, ् 等,则将其与前一个连接在一起。

以下是一种方法。

function joinVarnamala($array){
    $singsArray=array("ि","्");
    $out=array($array[0]);

    for ($i=1; $i <count($array) ; $i++) { 
        if (in_array($array[$i], $singsArray)) {
            $out[count($out)-1].=$array[$i];
        }else{
            $out[]=$array[$i];
        }
    }
    return $out;
}
print_r(joinVarnamala($ar));

输出:

数组([0] => बि [1] => क् [2] => र [3] => म)

请注意,这是一段关于输出的代码,其中包含一个数组。

1
您好,我正在使用您的方法,但输出结果如下:Array([0] =>&[1] =>#[2] => 2 [3] => 3 [4] => 2 [5] => 5 [6] =>; [7] =>&[8] =>#[9] => 2 [10] => 3 [11] => 6 [12] => 7 [13] =>; [14] =>&[15] =>#[16] => 2 [17] => 3 [18] => 5 [19] => 2 [20] =>; [21] =>&[22] =>#[23] => 2 [24] => 3 [25] => 8 [26] => 1 [27] =>; [28] =>&[29] =>#[30] => 2 [31] => 3 [32] => 4 [33] => 0 [34] =>; [35] =>&[36] =>#[37] => 2 [38] => 3 [39] => 6 [40] => 7 [41] =>;)请问这是什么原因,有什么解决办法吗?请回复。 - Alok Gupta
先生,你的代码在你的网站上能够正常运行。但是当我将你的代码放入我的Notepad++文件中时,显示为:$a = "??????"; - Alok Gupta
由于字符编码的原因,你可以在Notepad++中做的最简单的事情就是创建一个新文件,复制整个以前的代码+上面的代码,然后保存并替换以前的文件或使用新名称保存。 - Shub
或者在文档中点击顶部的编码菜单,选择以UTF-8编码,然后粘贴代码。 - Shub
subhanker 我尝试了,但输出结果是这样的:Array([0] =>?[1] =>?[2] =>?[3] =>?[4] =>?[5] =>?) Array([0] => ??????)从两个函数中。 - Alok Gupta
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接