Я просматривал другой вопрос, который вы опубликовали, и принятый ответ предлагает функцию в следующих строках для разбиения строки в символы:
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