فهرست مستندات پروژه

حروف به عدد

Abzar0.8.1مشاهده منبعفارسی / انگلیسی

تبدیل عدد نوشته‌شده با حروف فارسی به 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.

جستجو در مستندات

در همه پروژه‌ها جستجو کنید. با بستن این پنجره به راهنما برمی‌گردید.

Tab برای جابه‌جایی · Enter برای باز کردنEsc برای بستن