PHP Convert Numbers to Word

How to Convert Numbers to Word Using Vanilla PHP

html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <form action="./backend.php" method="post">
        <input type="text" name="txt" placeholder="Enter number (1-999)">
        <button type="submit">convert</button>
    </form>
</body>

</html>

php

<?php
function numberToWords($num)
{
    $ones = [
        0 => 'zero',
        1 => 'one',
        2 => 'two',
        3 => 'three',
        4 => 'four',
        5 => 'five',
        6 => 'six',
        7 => 'seven',
        8 => 'eight',
        9 => 'nine',
        10 => 'ten',
        11 => 'eleven',
        12 => 'twelve',
        13 => 'thirteen',
        14 => 'fourteen',
        15 => 'fifteen',
        16 => 'sixteen',
        17 => 'seventeen',
        18 => 'eighteen',
        19 => 'nineteen'
    ];

    $tens = [
        2 => 'twenty',
        3 => 'thirty',
        4 => 'forty',
        5 => 'fifty',
        6 => 'sixty',
        7 => 'seventy',
        8 => 'eighty',
        9 => 'ninety'
    ];

    if ($num < 20) {
        return $ones[$num];
    } elseif ($num < 100) {
        $ten = intdiv($num, 10);
        $rest = $num % 10;
        return $tens[$ten] . ($rest ? '-' . $ones[$rest] : '');
    } elseif ($num < 1000) {
        $hundred = intdiv($num, 100);
        $rest = $num % 100;
        $andPart = $rest ? ' and ' . numberToWords($rest) : '';
        return $ones[$hundred] . ' hundred' . $andPart;
    } else {
        return 'Number out of range (1-999)';
    }
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $txt = intval($_POST['txt']);
    $converted = numberToWords($txt);
    echo "No convert: $txt<br>";
    echo "Converted: $converted";
}