Install via Composer:
composer require djunehor/word-to-number
Publish config (optional):
php artisan vendor:publish --provider="Djunehor\WordToNumber\WordToNumberServiceProvider"
(Located at config/word-to-number.php)
First Use Case: Convert a simple English word-to-number:
use Djunehor\WordToNumber\Facades\WordToNumber;
$number = WordToNumber::convert('twenty-five');
// Returns: 25
Djunehor\WordToNumber\Facades\WordToNumber (recommended for Laravel apps).Djunehor\WordToNumber\WordToNumber (for direct instantiation).config/word-to-number.php (for locale customization).Basic Conversion:
$result = WordToNumber::convert('one hundred and twenty-three');
// Returns: 123
twenty-one), "and" (one hundred and one), and ordinals (first).Locale-Specific Handling:
WordToNumber::setLocale('es'); // Spanish
$numero = WordToNumber::convert('veinticinco');
// Returns: 25
(Check config/word-to-number.php for available locales: en, es, fr, de, it.)
Integration with Laravel Requests:
$wordNumber = request('word_number');
$numericValue = WordToNumber::convert($wordNumber);
Validation Rule:
use Djunehor\WordToNumber\Rules\WordToNumber as WordToNumberRule;
$request->validate([
'amount' => ['required', new WordToNumberRule],
]);
Custom Locale Extension:
Add a new locale by extending Djunehor\WordToNumber\Locales\Locale and registering it in the config.
Batch Processing:
$words = ['one', 'two', 'three'];
$numbers = array_map(fn($word) => WordToNumber::convert($word), $words);
// Returns: [1, 2, 3]
Error Handling:
try {
$number = WordToNumber::convert('invalid-text');
} catch (\InvalidArgumentException $e) {
// Handle invalid input (e.g., log or return default)
}
Locale Mismatch:
en).WordToNumber::convert('cinquante') in en locale will fail.Hyphen Sensitivity:
-) are required for compound numbers (e.g., twenty-one vs. twentyone).Ordinal Handling:
first, second) are converted to 1, 2, etc., but may not work for all locales.twenty-first (21) vs. twenty first (may fail).Case Sensitivity:
Twenty-Five may fail in en; use twenty-five).Deprecated Methods:
WordToNumber::toNumber() (alias for convert() but less explicit).WordToNumber::setDebug(true); // Logs parsing steps to storage/logs/word-to-number.log
Djunehor\WordToNumber\Locales\EnLocale) for missing words.Add Custom Words:
Override the locale class or extend Djunehor\WordToNumber\Locales\Locale:
class CustomEnLocale extends \Djunehor\WordToNumber\Locales\EnLocale {
protected $words = [
'custom' => 999,
];
}
Register it in config/word-to-number.php under locales.
Modify Parsing Logic:
Extend Djunehor\WordToNumber\WordToNumber and override parse() for custom rules.
Performance:
$cache = [];
$number = $cache[$word] ?? WordToNumber::convert($word);
How can I help you explore Laravel packages today?