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

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

$a = "आलोक"

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

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

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

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

-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 функция. Посмотрите на рабочая демо.

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]