لتحويل الأرقام إلى كلمات في Yii2، يمكنك استخدام الدالة التالية:
phpfunction convertNumberToWords($number)
{
$words = ["", "واحد", "اثنان", "ثلاثة", "أربعة", "خمسة", "ستة", "سبعة", "ثمانية", "تسعة", "عشرة", "أحد عشر", "اثنا عشر", "ثلاثة عشر", "أربعة عشر", "خمسة عشر", "ستة عشر", "سبعة عشر", "ثمانية عشر", "تسعة عشر"];
$units = ["", "عشرة", "مئة", "ألف", "مليون", "مليار", "تريليون"];
$num = str_replace(",", "", $number);
$num = number_format($num, 2, ".", ",");
$num_arr = explode(".", $num);
$num_word = "";
if (isset($num_arr[0]) && !empty($num_arr[0])) {
$num_arr[0] = str_split(strrev($num_arr[0]), 3);
foreach ($num_arr[0] as $key => $value) {
$value = strrev($value);
$value_word = "";
if ($value[0] != "0") {
$value_word .= $words[$value[0]];
}
if (isset($value[1]) && $value[1] != "0") {
$value_word .= " " . $words[$value[1] + 10];
}
if (isset($value[2]) && $value[2] != "0") {
$value_word .= " " . $words[$value[2]] . " مئة";
}
if ($key > 0) {
$value_word .= " " . $units[$key + 2];
}
$num_word = $value_word . $num_word;
}
}
if (isset($num_arr[1]) && !empty($num_arr[1])) {
$num_arr[1] = str_split($num_arr[1], 1);
$num_word .= " و " . $words[$num_arr[1][0]] . " جنيه";
if ($num_arr[1][1] != "0") {
$num_word .= " و " . $words[$num_arr[1][1]] . " قرش";
}
} else {
$num_word .= " جنيه فقط";
}
return $num_word;
}
// Example usage
$total = 5600;
$convertedTotal = convertNumberToWords($total);
echo "المبلغ بالأرقام: $total
";
echo "المبلغ بالكلمات: $convertedTotal";
هذه الدالة convertNumberToWords
تأخذ العدد وتقوم بتحويله إلى كلمات. يمكنك استدعاء هذه الدالة مع المبلغ الذي تريد تحويله إلى كلمات وستعيد لك الكلمات المقابلة للمبلغ.
المزيد من المعلومات
لتحويل الأرقام إلى كلمات في Yii2، يمكنك استخدام الكلاس yii\helpers\Inflector
الذي يوفر وظيفة ordinalize
لهذا الغرض. تقوم هذه الوظيفة بتحويل الأرقام إلى ترتيبات، مثل 1st، 2nd، 3rd، وهكذا.
على سبيل المثال، يمكنك استخدامها كما يلي:
phpuse yii\helpers\Inflector;
$total = 5600;
$convertedTotal = Inflector::ordinalize($total);
echo "المبلغ بالأرقام: $total
";
echo "المبلغ بالكلمات: $convertedTotal";
وهذا سيعيد “المبلغ بالكلمات” بصيغة ترتيبية، على سبيل المثال “five thousand six hundredth”، ويمكنك تعديل الناتج بما يناسب اللغة العربية بحيث يكون “five thousand six hundredth” تصبح “خمسة آلاف وستمائة”.