Inside this article we will see the concept i.e Laravel 9 How To Convert Number To Words Tutorial. Article contains the classified information about Conversion of Numbers to Words using concept of laravel.
If you are looking for a solution i.e How to Convert number to words using Laravel 9 then this article will help you a lot for this. Tutorial is super easy to understand and implement it in your code as well.
Number To Words means:
120: One Hundred Twenty
4500: Four Thousand and Five Hundreds
Learn More –
- How To Convert Number To Words in PHP
- How To Get The Last Character of a String in JavaScript
- Javascript Filter Array Elements with Multiple Conditions
- Javascript startsWith endsWith Methods Example Tutorial
Let’s get started.
Laravel Installation
Open terminal and run this command to create a laravel project.
composer create-project laravel/laravel myblog
It will create a project folder with name myblog inside your local system.
To start the development server of laravel –
php artisan serve
URL: http://127.0.0.1:8000
Assuming laravel already installed inside your system.
Method #1: Number To Words within Controller
Let’s consider a application controller. In this controller we will create a method which handles number to words conversion.
Open project into terminal and create this controller:
$ php artisan make:controller DemoController
It will create a controller file DemoController.php inside /app/Http/Controllers folder.
Open DemoController.php file and write this code into it.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class DemoController extends Controller
{
/**
* Write code on Method
*
* @return response()
*/
public function index()
{
$word = $this->numberToWord(120);
print($word);
echo "<br>";
$word = $this->numberToWord(4500);
print($word);
echo "<br>";
$word = $this->numberToWord(58010);
print($word);
}
/**
* Write code on Method
*
* @return response()
*/
public function numberToWord($num = '')
{
$num = (string) ((int) $num);
if ((int) ($num) && ctype_digit($num)) {
$words = array();
$num = str_replace(array(',', ' '), '', trim($num));
$list1 = array(
'', 'one', 'two', 'three', 'four', 'five', 'six', 'seven',
'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen',
'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'
);
$list2 = array(
'', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty',
'seventy', 'eighty', 'ninety', 'hundred'
);
$list3 = array(
'', 'thousand', 'million', 'billion', 'trillion',
'quadrillion', 'quintillion', 'sextillion', 'septillion',
'octillion', 'nonillion', 'decillion', 'undecillion',
'duodecillion', 'tredecillion', 'quattuordecillion',
'quindecillion', 'sexdecillion', 'septendecillion',
'octodecillion', 'novemdecillion', 'vigintillion'
);
$num_length = strlen($num);
$levels = (int) (($num_length + 2) / 3);
$max_length = $levels * 3;
$num = substr('00' . $num, -$max_length);
$num_levels = str_split($num, 3);
foreach ($num_levels as $num_part) {
$levels--;
$hundreds = (int) ($num_part / 100);
$hundreds = ($hundreds ? ' ' . $list1[$hundreds] . ' Hundred' . ($hundreds == 1 ? '' : 's') . ' ' : '');
$tens = (int) ($num_part % 100);
$singles = '';
if ($tens < 20) {
$tens = ($tens ? ' ' . $list1[$tens] . ' ' : '');
} else {
$tens = (int) ($tens / 10);
$tens = ' ' . $list2[$tens] . ' ';
$singles = (int) ($num_part % 10);
$singles = ' ' . $list1[$singles] . ' ';
}
$words[] = $hundreds . $tens . $singles . (($levels && (int) ($num_part)) ? ' ' . $list3[$levels] . ' ' : '');
}
$commas = count($words);
if ($commas > 1) {
$commas = $commas - 1;
}
$words = implode(', ', $words);
$words = trim(str_replace(' ,', ',', ucwords($words)), ', ');
if ($commas) {
$words = str_replace(',', ' and', $words);
}
return $words;
} else if (!((int) $num)) {
return 'Zero';
}
return '';
}
}
Add Route
Open web.php file from /routes folder and add this route into it.
//...
use App\Http\Controllers\DemoController;
Route::get('number-to-words', [DemoController::class, "index"]);
//...
Once we will call the route, output will be:
One Hundred Twenty
Four Thousand and Five Hundreds
Fifty Eight Thousand and Ten
Method #2: Number To Words (Custom Blade Directive)
Here,
We will create a custom laravel directive i.e @numberToWord() via which we will register the concept of number to words conversion.
We need to register blade directive by using AppServiceProvider.
Open AppServiceProvider.php file from /app/Providers folder. Update this provide with this following updated code.
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Blade;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Blade::directive('numberToWord', function ($num) {
$num = (string) ((int) $num);
if ((int) ($num) && ctype_digit($num)) {
$words = array();
$num = str_replace(array(',', ' '), '', trim($num));
$list1 = array(
'', 'one', 'two', 'three', 'four', 'five', 'six', 'seven',
'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen',
'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'
);
$list2 = array(
'', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty',
'seventy', 'eighty', 'ninety', 'hundred'
);
$list3 = array(
'', 'thousand', 'million', 'billion', 'trillion',
'quadrillion', 'quintillion', 'sextillion', 'septillion',
'octillion', 'nonillion', 'decillion', 'undecillion',
'duodecillion', 'tredecillion', 'quattuordecillion',
'quindecillion', 'sexdecillion', 'septendecillion',
'octodecillion', 'novemdecillion', 'vigintillion'
);
$num_length = strlen($num);
$levels = (int) (($num_length + 2) / 3);
$max_length = $levels * 3;
$num = substr('00' . $num, -$max_length);
$num_levels = str_split($num, 3);
foreach ($num_levels as $num_part) {
$levels--;
$hundreds = (int) ($num_part / 100);
$hundreds = ($hundreds ? ' ' . $list1[$hundreds] . ' Hundred' . ($hundreds == 1 ? '' : 's') . ' ' : '');
$tens = (int) ($num_part % 100);
$singles = '';
if ($tens < 20) {
$tens = ($tens ? ' ' . $list1[$tens] . ' ' : '');
} else {
$tens = (int) ($tens / 10);
$tens = ' ' . $list2[$tens] . ' ';
$singles = (int) ($num_part % 10);
$singles = ' ' . $list1[$singles] . ' ';
}
$words[] = $hundreds . $tens . $singles . (($levels && (int) ($num_part)) ? ' ' . $list3[$levels] . ' ' : '');
}
$commas = count($words);
if ($commas > 1) {
$commas = $commas - 1;
}
$words = implode(', ', $words);
$words = trim(str_replace(' ,', ',', ucwords($words)), ', ');
if ($commas) {
$words = str_replace(',', ' and', $words);
}
} else if (!((int) $num)) {
$words = 'Zero';
} else {
$words = '';
}
return $words;
});
}
}
Usage of Custom Directive
We can use @numberToWord() this custom directive inside blade templates.
In your blade template file, you need to use like this:
//... @numberToWord(1256) //...
Output
One Thousand and Two Hundreds Fifty Six
We hope this article helped you to learn Laravel 9 How To Convert Number To Words Tutorial in a very detailed way.
If you liked this article, then please subscribe to our YouTube Channel for PHP & it’s framework, WordPress, Node Js video tutorials. You can also find us on Twitter and Facebook.
Read more