как посчитать строку хинди в массиве с помощью php и подсчитать, сколько букв и гласных в строке

у меня есть что-то вроде

$a = "आलोक"

Я хочу добиться чего-то вроде php

a[0] = आ  
a[1] = लो  
a[3] = क 

Я хочу считать числами, например: - я ввел имя आलोक, я хочу вывести букву = 3 и гласную = 2, потому что в आलोक первая буква (आ), вторая буква (लो) и третья буква (क). поэтому на выходе получается буква = 3, а для гласной первая гласная (ा) и вторая гласная (ो), поэтому на выходе гласная = 2

имя может быть динамическим, а не статическим


person Alok Gupta    schedule 04.11.2014    source источник
comment
не дубликат, это только разрыв строки, но не подсчет букв и гласных   -  person Alok Gupta    schedule 04.11.2014


Ответы (1)


Я просматривал другой вопрос, который вы опубликовали, и принятый ответ предлагает функцию в следующих строках для разбиения строки в символы:

 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));

Если вы запустите этот код, он даст вам следующий вывод:

  Array
  (
   [0] => आ
   [1] => ल
   [2] => ो
   [3] => क
  )

Я собираюсь развить эту функцию и немного ее расширить, и вы сможете легко подсчитывать гласные и согласные.

К счастью, я нашел это полезное руководство по кодировкам UTF-8 всех персонажи сценария Девнагри. Другой простой инструмент для подтверждения и получения десятичного и восьмеричного представлений для этих символов — http://unicodelookup.com/< /а>.

В таблице я нашел 0x093F и легко сопоставил его с помощью ि.

Теперь, когда у вас есть это, нужно просто получить декодированный символ Юникода из HEX-кода. Вы можете легко добиться этого с помощью:

echo json_decode('"\u093F"'); //Ouputs  ि

Я объединил эти шаги вместе в функции под названием countVowels:

 function countVowels ($req){

   //I have hard coded the hex values of some characters that are vowels in Hindi
   //This does NOT include all the vowels
   //You might want to add more as per your needs from the table that I have provided before

   $hindi = array("\u0906","\u0908","\u093E","\u093F","\u0945","\u0946","\u0947","\u0948","\u0949","\u094A","\u094B","\u094C","\u094D");
   $vowels= array();
   $vowelcount = 0;
   for($i = 0; $i<count($hindi); $i++){

     //Push the decoded unicode character into the $vowels array
     array_push($vowels,json_decode('"'.$hindi[$i].'"')); 
   }

   for($j=0;$j<count($req);$j++){
      if(in_array($req[$j], $vowels))
        $vowelcount++;
   }
   return $vowelcount;
 }

Вход для этой функции — $req, который может быть выходным массивом для ранее определенной функции mbStringToArray. Если у вас есть количество гласных, вы можете легко получить количество других согласных. Поток может выглядеть примерно так:

  $a = "आलोक"; 
  $arr = mbStringToArray($a)
  $vows = countVowels($arr); //Number of vowels 
  $cons = count($arr) - $vows; //Number of consonants

Таким образом, в этом случае возвращаемых согласных будет 2, а гласных также будет 2. Это потому, что я жестко запрограммировал आ как гласную, и поэтому она учитывается в функции countVowels. Взгляните на рабочую демонстрацию.

Вы можете изменить массив, который я там использую, и позаботиться о таких несоответствиях в соответствии с вашими требованиями. Я надеюсь, что это поможет вам начать в правильном направлении.

person Vivek Pradhan    schedule 04.11.2014