У меня есть что-то вроде
$a = "आलोक"
Я хочу добиться чего-то вроде в php
a[0] = आ
a[1] = लो
a[3] = क
Я хочу считать в числах, как: —
я поставил имя आलोक
я хочу вывод, как буква = 3 и гласная = 2
потому что в आलोक
первая буква (आ),
вторая буква (लो)
и третья буква (क).
так ставь ставь буквой = 3
и для гласной,
первая гласная (ा) и
второй гласный (ो)
так что поставь гласную = 2
имя может быть динамическим, а не статичным
Я перебирал другой вопрос, который ты написал, и принятый ответ предлагает функцию в следующих строках, чтобы разбить строку на символы:
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
функция. Посмотрите на рабочая демо.
Вы можете изменить массив, который я там использую, и позаботиться о таких расхождениях в соответствии с вашими требованиями. Я надеюсь, что это поможет вам начать в правильном направлении.
Других решений пока нет …