همهی راهنماها
راهنمایی با این جستوجو پیدا نشد.
عدد به حروف عربی
نوشتن عدد با حروف عربی فصیح، با جنس معدود، حالت اعرابی، اعرابگذاری و عدد ترتیبی. هر عدد صحیح زیر 10^27.
در این صفحه
این صفحه چه میدهد
عدد را با حروف عربی فصیح مینویسد. جنس معدود، حالت اعرابی، حرکتگذاری و عدد ترتیبی ۱ تا ۹۹ را پشتیبانی میکند و تا 1027 میرود. عدد به حروف فارسی در عدد به حروف است.
شروع سریع
برای نوشتن عدد به عربی، زبان 'ar' را به NumberToWords::convert() بدهید. بدون گزینه، خروجی عدد ساده است، مثل شمارش یا جواب یک پرسش (مذکر).
<?php
require 'vendor/autoload.php';
use RtlyKit\Number\NumberToWords;
echo NumberToWords::convert(11, 'ar'), "\n"; // أحد عشر
echo NumberToWords::convert(21, 'ar'), "\n"; // واحد وعشرون
echo NumberToWords::convert(1234, 'ar'), "\n"; // ألف ومئتان وأربعة وثلاثون
echo NumberToWords::convert(3000, 'ar'), "\n"; // ثلاثة آلاف
echo NumberToWords::convert(2000000, 'ar'), "\n"; // مليونان
echo NumberToWords::convert(-7, 'ar'), "\n"; // سالب سبعة
echo \RtlyKit\number_to_words(3, 'ar'), "\n"; // ثلاثةتابع کمکی number_to_words() فقط عدد و زبان میگیرد. برای گزینهها از NumberToWords::convert() استفاده کنید. ورودی (عدد صحیح، رشته با رقم فارسی و جداکننده، خطاها) مثل فارسی است. جزئیاتش در عدد به حروف آمده است.
بازه: هر عدد صحیح کوچکتر از 1027. عدد بزرگتر خطای number_too_large میدهد.
گزینهها
گزینهها را بهصورت آرایه یا شیء RtlyKit\Number\ArabicOptions به آرگومان سوم بدهید. کلید ناشناخته یا مقدار نادرست InvalidNumberException میدهد.
| کلید | مقدارها | پیشفرض | معنا |
|---|---|---|---|
mode | count / noun | count | عدد ساده (شمارش، جواب، جدول) یا عددی که معدود درست بعد از آن میآید |
gender | m / f | m | جنس مفرد معدود. فقط در حالت noun اثر دارد |
case | nom / acc / gen | nom | حالت اعرابی: مرفوع، منصوب، مجرور |
diacritics | none / case | none | با case، حرکت آخر کلمهها و تنوین نوشته میشود |
hundreds | mi_a / ma_i_a | mi_a | مئة یا مائة |
joinHundreds | true / false | true | ثلاثمئة (چسبیده) یا ثلاث مئة (جدا) |
negative | یک واژه، ۱ تا ۶۴ بایت | سالب | واژهٔ عدد منفی |
billion | milyar / bilyon | milyar | نام 109: مليار یا بليون |
definite | true / false | true | فقط برای عدد ترتیبی: معرفه یا نکره |
use RtlyKit\Number\ArabicOptions;
echo NumberToWords::convert(3, 'ar', ['mode' => 'noun', 'gender' => 'f']), "\n"; // ثلاث
$options = new ArabicOptions(mode: 'noun', gender: 'f');
echo NumberToWords::convert(3, 'ar', $options), "\n"; // ثلاثگزینهها فقط برای عربیاند. اگر همراه 'fa' بدهید، خطای invalid_argument میگیرید.
معدود و جنس
در عربی عدد با معدود هماهنگ میشود. mode: 'noun' یعنی معدود درست بعد از عدد میآید. gender جنس مفرد معدود است. قاعدهٔ ۳ تا ۱۰ برعکس است: معدود مذکر عدد با تاء میگیرد (ثلاثة) و معدود مؤنث بدون تاء (ثلاث). ۱ و ۲ و ۱۱ و ۱۲ با معدود همجنساند.
$m = ['mode' => 'noun', 'gender' => 'm'];
$f = ['mode' => 'noun', 'gender' => 'f'];
echo NumberToWords::convert(3, 'ar', $m), ' | ', NumberToWords::convert(3, 'ar', $f), "\n"; // ثلاثة | ثلاث
echo NumberToWords::convert(13, 'ar', $m), ' | ', NumberToWords::convert(13, 'ar', $f), "\n"; // ثلاثة عشر | ثلاث عشرة
echo NumberToWords::convert(2, 'ar', $m), ' | ', NumberToWords::convert(2, 'ar', $f), "\n"; // اثنان | اثنتان
echo NumberToWords::convert(25, 'ar', $m), ' | ', NumberToWords::convert(25, 'ar', $f), "\n"; // خمسة وعشرون | خمس وعشرون
echo NumberToWords::convert(8, 'ar', $f), "\n"; // ثمانيدر حالت noun، آخرین کلمهٔ عبارت به معدود اضافه میشود. پس دوگانهها شکل اضافه میگیرند:
echo NumberToWords::convert(200, 'ar', ['mode' => 'noun']), "\n"; // مئتا
echo NumberToWords::convert(2000, 'ar', ['mode' => 'noun']), "\n"; // ألفا
echo NumberToWords::convert(2000000, 'ar', ['mode' => 'noun', 'case' => 'gen']), "\n"; // مليونيدر حالت count جنس نادیده گرفته میشود و همیشه شکل مذکر میآید. بخشهای بالای ۱۰۰۰ (ضریب صد و ضریب مقیاس) با جنس معدود عوض نمیشوند: ۳۰۰۰ برای معدود مؤنث هم «ثلاثة آلاف» است.
نکته: خود معدود را عدد به حروف نمینویسد. شما کنار عدد میگذارید.
حالت اعرابی
بعضی کلمهها حتی بدون حرکتگذاری با حالت عوض میشوند: اثنان و اثنين، عشرون و عشرين، مئتان و مئتين، ألفان و ألفين، اثنا عشر و اثني عشر. گزینهٔ case همین حرفها را تعیین میکند:
echo NumberToWords::convert(2, 'ar', ['case' => 'gen']), "\n"; // اثنين
echo NumberToWords::convert(20, 'ar', ['case' => 'acc']), "\n"; // عشرين
echo NumberToWords::convert(200, 'ar', ['case' => 'gen']), "\n"; // مئتين
echo NumberToWords::convert(12, 'ar'), "\n"; // اثنا عشر
echo NumberToWords::convert(12, 'ar', ['case' => 'acc']), "\n"; // اثني عشرحرکتگذاری
با diacritics: 'case' آخر هر کلمهٔ معرب حرکت یا تنوین میگیرد. فقط حرکت آخر نوشته میشود، نه حرکت وسط کلمه.
echo NumberToWords::convert(1234, 'ar', ['diacritics' => 'case']), "\n"; // ألفٌ ومئتانِ وأربعةٌ وثلاثونَ
echo NumberToWords::convert(2025, 'ar', ['diacritics' => 'case']), "\n"; // ألفانِ وخمسةٌ وعشرونَ
echo NumberToWords::convert(5, 'ar', ['diacritics' => 'case']), "\n"; // خمسةٌ
echo NumberToWords::convert(5, 'ar', ['diacritics' => 'case', 'mode' => 'noun']), "\n"; // خمسةُدر حالت noun کلمهٔ آخر به معدود اضافه شده و تنوین نمیگیرد (خمسةُ). حرکتگذاری برای عدد ترتیبی تعریف نشده و خطای invalid_argument میدهد.
املای صدگان
echo NumberToWords::convert(300, 'ar'), "\n"; // ثلاثمئة
echo NumberToWords::convert(300, 'ar', ['joinHundreds' => false]), "\n"; // ثلاث مئة
echo NumberToWords::convert(300, 'ar', ['hundreds' => 'ma_i_a']), "\n"; // ثلاثمائةمقیاسهای بزرگ
نام مقیاسها به روش مقیاس کوتاه است: ألف (103)، مليون (106)، مليار (109)، تريليون (1012)، كوادريليون (1015)، كوينتيليون (1018)، سكستيليون (1021) و سبتيليون (1024). برای ۳ تا ۱۰ از جمع استفاده میشود (آلاف، ملايين، مليارات، تريليونات و ...) و برای ۲ از مثنی (مليونان).
echo NumberToWords::convert(3000000, 'ar'), "\n"; // ثلاثة ملايين
echo NumberToWords::convert(5000000000000, 'ar'), "\n"; // خمسة تريليونات
echo NumberToWords::convert('1000000000000000000000000', 'ar'), "\n"; // سبتيليون
echo NumberToWords::convert(102000, 'ar'), "\n"; // مئة ألف وألفان
echo NumberToWords::convert(111000, 'ar'), "\n"; // مئة وأحد عشر ألف
echo NumberToWords::convert(1000000000, 'ar'), "\n"; // مليار
echo NumberToWords::convert(1000000000, 'ar', ['billion' => 'bilyon']), "\n"; // بليوناگر بخشی از عدد به شکل «صدگان بهاضافهٔ ۱ تا ۱۰» باشد، برای اینکه خوانا بماند جدا نوشته میشود: ۱۰۲٬۰۰۰ میشود «مئة ألف وألفان». بخشهای با ۱۱ تا ۹۹ یا بدون باقیمانده همان شکل ساده را دارند.
عدد منفی
عدد منفی با «سالب» شروع میشود. با گزینهٔ negative میتوانید واژهٔ دیگری بگذارید (یک واژه، ۱ تا ۶۴ بایت).
echo NumberToWords::convert(-7, 'ar'), "\n"; // سالب سبعة
echo NumberToWords::convert(-5, 'ar', ['negative' => 'ناقص']), "\n"; // ناقص خمسةعدد ترتیبی
NumberToWords::ordinal($number, 'ar', $options) عدد ترتیبی ۱ تا ۹۹ را مینویسد. اینها اثر دارند: gender (جنس موصوف)، case و definite. mode نادیده گرفته میشود.
echo NumberToWords::ordinal(1), ' | ', NumberToWords::ordinal(1, 'ar', ['gender' => 'f']), "\n"; // الأول | الأولى
echo NumberToWords::ordinal(3), ' | ', NumberToWords::ordinal(3, 'ar', ['gender' => 'f']), "\n"; // الثالث | الثالثة
echo NumberToWords::ordinal(12), "\n"; // الثاني عشر
echo NumberToWords::ordinal(21), ' | ', NumberToWords::ordinal(21, 'ar', ['gender' => 'f']), "\n"; // الحادي والعشرون | الحادية والعشرون
echo NumberToWords::ordinal(20, 'ar', ['case' => 'gen']), "\n"; // العشرين
echo NumberToWords::ordinal(2, 'ar', ['definite' => false, 'case' => 'acc']), "\n"; // ثانياعدد ترتیبی فقط برای زبان ar است. برای ۰، عدد منفی یا عدد بالای ۹۹ خطا میگیرید. عدد ترتیبی فارسی را Format::ordinal() میسازد.
خطاها
| وضعیت | خطا | کد |
|---|---|---|
زبان پشتیبانی نمیشود (در ordinal()، هر زبان غیر از ar) | UnsupportedLocaleException | unsupported_locale |
کلید یا مقدار گزینه نادرست است، گزینه با fa، یا diacritics در عدد ترتیبی | InvalidNumberException | invalid_argument |
عدد صحیح نیست، یا NAN و INF | InvalidNumberException | invalid_number / non_finite_number |
| رشته بلندتر از ۴۰۹۶ بایت | InvalidNumberException | input_too_long |
convert() از 1027 به بالا، یا ordinal() از ۹۹ به بالا | InvalidNumberException | number_too_large |
ordinal() با ۰ یا عدد منفی | InvalidNumberException | invalid_number |
try {
NumberToWords::convert(5, 'ar', ['gender' => 'x']);
} catch (\RtlyKit\Exceptions\InvalidNumberException $e) {
echo $e->getMessage(), ' [', $e->getErrorCode()->value, "]\n";
// Invalid option "gender": expected one of m, f. [invalid_argument]
}منبعها و خوب است بدانید
خوب است بدانید. شکلهای عربی از منابع دستور زبان ذکرشده در بخش منابع گرفته شدهاند. چند خروجی هنوز منتظر بازبینی یک عربزبان است، مثلاً جملههای بسیار بزرگ، نام مقیاسهای بالای مليار و جدا کردن گروههایی مثل ۱۰۲٬۰۰۰. اگر متن را در سند رسمی یا حقوقی میگذارید، یک عربزبان آن را بخواند.
- نام مقیاسهای بزرگتر از مليار قرارداد رایج مقیاس کوتاه است. مقیاس بلند ارائه نمیشود.
- گزینهها فقط روی
convert()وordinal()کار میکنند. تابع کمکیnumber_to_words()گزینه نمیگیرد. - مقدار پیشفرض بدون گزینه برای هر عدد زیر 10 9 همان خروجی نسخههای قبلی است.
این صفحه مفید بود؟