فهرست مستندات پروژه
حروف به عدد
تبدیل عدد نوشتهشده با حروف فارسی به integer یا float.
WordsToNumber::parse() عدد نوشتهشده با حروف فارسی را به int یا float تبدیل میکند. برای ورودی غیرقابل پردازش null میدهد. این متد در کنار NumberToWords کاربرد دارد، ولی تبدیل رفتوبرگشت float همیشه بدون افت دقت نیست.
<?php
require 'vendor/autoload.php';
use Eram\Abzar\Format\WordsToNumber;
var_dump(WordsToNumber::parse('یک هزار و دویست و سی و چهار'));
var_dump(WordsToNumber::parse('سه ممیز پنج'));
var_dump(WordsToNumber::parse('دو سه'));
int(1234)
float(3.5)
NULL
قواعد
منفیدر ابتدای متن، علامت عدد را عوض میکند.ممیزشروع بخش اعشاری است؛ بخش بعد از آن بر توان مناسب ۱۰ تقسیم میشود و نتیجه float است.یکقبل ازهزار،میلیونو مقیاسهای بزرگتر اختیاری است.- ترکیب رقم و حروف مثل
یک هزار و 200پذیرفته نیست. - فاصله و نیمفاصله کلمهها را جدا میکنند.
واختیاری است؛بیست دومقدار 22 میدهد. - در هر گروه زیر هزار، ترتیب صدگان، دهگان و یکان باید نزولی باشد.
دو سه،بیست سیویازده دونامعتبرند.سه صدمقدار 300 میدهد. هزارگروه قبل را یک بار ضرب میکند. مقیاسهای بزرگتر باید نزولی باشند؛هزار میلیاردپذیرفته میشود ولییک میلیون دو میلیوننه.- شکلهای
شیش،صد،چارصد،بیلیونبه معنی 10⁹ وکوآدریلیونبه معنی 10¹⁵ هم پذیرفته میشوند.
دقت و محدودیت
نتیجه صحیح باید در PHP_INT_MAX جا شود؛ حدود 9.2 × 10¹⁸ روی PHP شصتوچهاربیتی و کمتر روی محیط سیودوبیتی. مقدار بزرگتر مثل ده کوینتیلیون، null میدهد. برای عددهای بزرگتر ابزار محاسبات جداگانه لازم است.
null را به صفر تبدیل نکنید؛ یعنی پردازش شکست خورده است. پسوند پول، عدد ترتیبی، متن آزاد، ترکیب رقم و حروف و fuzzy parsing پشتیبانی نمیشوند. اعشار از نوع float است و برای مبلغ دقیق مناسب نیست؛ از ریال صحیح در Amount استفاده کنید.
مطالب مرتبط: نمایش عدد، ارقام، تفاوت با persian-tools.