Parse the phone number withsscanf() or preg_match(), then translate with PHP's native numeric text formatter, and conditionally handle leading zeros. Demo

$usPhone = '123-456-7809';

$digits = sscanf($usPhone, '%1s%1s%1s-%1s%1s%1s-%2s%2s');

$f = new NumberFormatter('en', NumberFormatter::SPELLOUT);
echo implode(
    ' ',
    array_map(
        fn($d) => ($d !== (string)(int)$d ? 'oh ' : '')
            . (!(int)$d ? 'oh' : $f->format((int)$d)),
        $digits
    )
);

Output

one two three four five six seventy-eight oh nine

103-050-0000 becomes:
one oh three oh five oh oh oh oh oh

103-050-4050 becomes:
one oh three oh five oh forty fifty


Here is another approach using preg_replace_callback() to which substrings get translated and how. Demo

$regex = <<<'REGEX'
~
 (?:
    ([1-9]\d)(?=(?:\d{2})?$)  # 1: double-digit in last segment
    |(0)                       # 2: zero
    |([1-9])                   # 3: single digit
 )
 -?                            # consume optional delimiter
~x
REGEX;

$f = new NumberFormatter('en', NumberFormatter::SPELLOUT);

echo ltrim(
         preg_replace_callback(
             $regex,
             fn($m) => sprintf(
                 ' %s',
                 array_key_last($m) === 2
                     ? 'oh'
                     : $f->format(intval($m[0]))
             ),
             $usPhone
         )
     );

As a deviation of the original requirements to help developers with phone numbers to Australian speech, here is a version which does not respect two-digit values in the last segment, but respects, hundreds, thousands, etc. as well as multiple consecutive numbers. Demo

$regex = <<<'REGEX'
~
 (?:
    \b([1-9]0{2,})\b # 1: hundreds, thousands, etc
    |(\d)\2+         # 2: multiples
    |(0)             # 3: zero
    |([1-9])         # 4: single digit
 )
 -?                  # consume optional delimiter
~x
REGEX;

$f = new NumberFormatter('en', NumberFormatter::SPELLOUT);
$mapping = [
    2 => 'double',
    3 => 'triple',
    4 => 'quadruple',
    5 => 'quintuple',
    6 => 'sextuple',
    7 => 'septuple',
    8 => 'octuple',
    9 => 'nonuple',
    10 => 'decuple',
];

echo ltrim(
         preg_replace_callback(
             $regex,
             fn($m) => ' ' . match (array_key_last($m)) {
                 1, 4 => $f->format((int)mapping[strlen(rtrim($m[0], '-'))] . " " . (f->format((int)$m[2]) : 'oh'),
                 default => 'oh',
             },
             $usPhone
         )
     );

$usPhone = '800-000-7755' becomes eight hundred triple oh double seven double five

Answer from mickmackusa on Stack Overflow
🌐
Mobilefish
mobilefish.com › services › phonenumber_words › phonenumber_words.php
Mobilefish.com - Phone number to words
Phone number to words · Post and search IT jobs for free · Pretty print or minify text in XML, JSON, CSS and SQL formats · Previous poll results · Prime numbers generator and checker · Private key match the certificate · QR code generator · Random IBAN generator · Random test data generator · Readability tester · Record XY mouse coordinates on an uploaded image · RF creditor reference generator, validator and reference converter ·
🌐
Phonespell
phonespell.org
Vanity Phone Number Resources
Enter a full phone number and see what words and phrases it spells.
Discussions

php - How do I convert a hyphenated phone number to words (with 0 as "oh")? - Stack Overflow
I'm working on a text to speech project, and I don't know how to handle US phone numbers. All phone numbers are in this format: 123-456-7890 I would like it to be converted to this: one two three, ... More on stackoverflow.com
🌐 stackoverflow.com
Phone numbers as words master list
Her Interactive listed the numbers and their meanings on their website https://www.herinteractive.com/2021/11/555-4639-and-other-phone-numbers/?srsltid=AfmBOoqTdS0Y-syVPnruUB_re7Tee60wDGEK0teO2Av0svl3JmaBoiSP More on reddit.com
🌐 r/nancydrew
13
117
June 20, 2025
How do I convert phone number to words in Google Sheets?
Make a sheet (i called it Ref) and make this table: | A | B | 1 | 0 | Zero | 2 | 1 | One | 3 | 2 | Two | 4 | 3 | Three | 5 | 4 | Four | 6 | 5 | Fife | 7 | 6 | Six | 8 | 7 | Seven | 9 | 8 | Eight | 10 | 9 | Nine Then you can use this for en entire range. Where your numbers are in A2:A: =ARRAYFORMULA(IF(ISBLANK(A2:A),,(VLOOKUP(SPLIT( REGEXREPLACE( REGEXREPLACE(A2:A4&"","(?s)(.{1})","$1"&CHAR(127)) ,"'","''") ,CHAR(127)),Ref!$A$1:$B$10,2,0)))) More on reddit.com
🌐 r/GoogleAppsScript
8
2
September 20, 2021
Just made a simple web app that converts phone numbers into unique phrases - Phonology.io - Thoughts?
Nice. I'm working on something similar, not in any way similar to your concept, the thing I'm doing also starts with just one text input field. Anyways, I've found from testing what I'm working on that it makes the site more user friendly if you add this attribute to the input field: autofocus="autofocus" As soon as the page loads the cursor is already in the text field. Also I notice that you have it 'autogenerate' when the text input field has an onchange or a keyup event, but you don't account for when people simply paste into the input field. You can use this javascript to detect when someone pastes into the field. function detectPaste(textarea, callback) { textarea.onpaste = function() { var sel = getTextAreaSelection(textarea); var initialLength = textarea.value.length; window.setTimeout(function() { var val = textarea.value; var pastedTextLength = val.length - (initialLength - sel.length); var end = sel.start + pastedTextLength; callback({ start: sel.start, end: end, length: pastedTextLength, text: val.slice(sel.start, end) }); }, 1); }; } It's in vanilla js in case you aren't using jquery. obviously you need to replace getTextAreaSelection() with whatever you use to grab that data. More on reddit.com
🌐 r/Lightbulb
39
122
February 4, 2018
🌐
Hanging Hyena
hanginghyena.com › finder › phone-number-to-words
What Does My Phone Number Spell? (Keypad Word Finder)
Convert your phone number into words using our phone number word finder. Discover what your phone number spells and create memorable phrases!
🌐
The Word Finder
thewordfinder.com › phone-number-anagram
Phone Number Anagram | What Does My Phone Number Spell?
What does your phone number spell? Use the form below to search for phone number anagrams. Let us know if you like what you see. Not all numbers will return amazing results, so be creative. You can use our anagram solver to find different word patterns. It can be counterintutive, but entering a shorter version of your number (perhaps leave out the area code) can yield more manageable results for you to work with.
🌐
CalculatorSoup
calculatorsoup.com › calculators › conversions › numberstowords.php
Numbers to Words Converter
Convert numbers to words, numbers to USD currency, and currency to words. Includes how to write a check. Use this converter to translate numbers to words in English.
🌐
60tools
60tools.com › en › tool › vanity-calculator
Vanity Calculator | 60tools
Type in a vanity phone number to display the numbers or generate possibly vanity words for an existing phone number.
🌐
Iplocation
devtools3.iplocation.net › phone-number-converter
Phone Number Converter
Converts a alphanumeric phone number to its numeric equivalent.
Find elsewhere
🌐
Rankfast
rankfast.co › tools › phone-number-spelling-tool
Phone Number Spelling Tool | Convert Digits to Words Easily
Convert HTML files to PHP format. ... Minify your JavaScript files for better performance. ... Minify your CSS files for faster load times. ... Minify your HTML files for optimization. ... Various tools for web-related tasks. ... Find your current IP address. ... Fetch HTML content from any URL. ... Spell out phone numbers for clarity.
Top answer
1 of 2
3

Parse the phone number withsscanf() or preg_match(), then translate with PHP's native numeric text formatter, and conditionally handle leading zeros. Demo

$usPhone = '123-456-7809';

$digits = sscanf($usPhone, '%1s%1s%1s-%1s%1s%1s-%2s%2s');

$f = new NumberFormatter('en', NumberFormatter::SPELLOUT);
echo implode(
    ' ',
    array_map(
        fn($d) => ($d !== (string)(int)$d ? 'oh ' : '')
            . (!(int)$d ? 'oh' : $f->format((int)$d)),
        $digits
    )
);

Output

one two three four five six seventy-eight oh nine

103-050-0000 becomes:
one oh three oh five oh oh oh oh oh

103-050-4050 becomes:
one oh three oh five oh forty fifty


Here is another approach using preg_replace_callback() to which substrings get translated and how. Demo

$regex = <<<'REGEX'
~
 (?:
    ([1-9]\d)(?=(?:\d{2})?$)  # 1: double-digit in last segment
    |(0)                       # 2: zero
    |([1-9])                   # 3: single digit
 )
 -?                            # consume optional delimiter
~x
REGEX;

$f = new NumberFormatter('en', NumberFormatter::SPELLOUT);

echo ltrim(
         preg_replace_callback(
             $regex,
             fn($m) => sprintf(
                 ' %s',
                 array_key_last($m) === 2
                     ? 'oh'
                     : $f->format(intval($m[0]))
             ),
             $usPhone
         )
     );

As a deviation of the original requirements to help developers with phone numbers to Australian speech, here is a version which does not respect two-digit values in the last segment, but respects, hundreds, thousands, etc. as well as multiple consecutive numbers. Demo

$regex = <<<'REGEX'
~
 (?:
    \b([1-9]0{2,})\b # 1: hundreds, thousands, etc
    |(\d)\2+         # 2: multiples
    |(0)             # 3: zero
    |([1-9])         # 4: single digit
 )
 -?                  # consume optional delimiter
~x
REGEX;

$f = new NumberFormatter('en', NumberFormatter::SPELLOUT);
$mapping = [
    2 => 'double',
    3 => 'triple',
    4 => 'quadruple',
    5 => 'quintuple',
    6 => 'sextuple',
    7 => 'septuple',
    8 => 'octuple',
    9 => 'nonuple',
    10 => 'decuple',
];

echo ltrim(
         preg_replace_callback(
             $regex,
             fn($m) => ' ' . match (array_key_last($m)) {
                 1, 4 => $f->format((int)mapping[strlen(rtrim($m[0], '-'))] . " " . (f->format((int)$m[2]) : 'oh'),
                 default => 'oh',
             },
             $usPhone
         )
     );

$usPhone = '800-000-7755' becomes eight hundred triple oh double seven double five

2 of 2
2

After the question requirements were edits, I recommend isolating the strictly-formatted phone number and replacing each digit with its equivalent word. Demo

$text = 'Call 123-456-7800 between 16:00 and 4:00 for confidential support';

$f = new NumberFormatter('en', NumberFormatter::SPELLOUT);
echo preg_replace_callback(
         '/\b(\d)(\d)(\d)-(\d)(\d)(\d)-(\d)(\d)(\d)(\d)\b/',
         fn($m) => implode(' ', array_map([$f, 'format'], array_slice($m, 1))),
         $text
     );
// Call one two three four five six seven eight zero zero between 16:00 and 4:00 for confidential support
🌐
CSG Network
csgnetwork.com › phonenumcvtrev.html
Alpha Phrase To Phone Number Calculator
Alpha Phrase To Phone Number Calculator · Version 1.0.1 · Home | Advertising | Calculators and Converters | Contact Us | Javascript | Sitemap | Glossary | Top Free Apps
🌐
GitHub
github.com › arunumd › Phone-Number-to-Word
GitHub - arunumd/Phone-Number-to-Word: This repository contains simple functions for conversion between phone numbers and alpha numeric encoding. The encoding comprises of a combination of a meaningful English word and numbers
This repository contains simple functions for conversion between phone numbers and alpha numeric encoding. The encoding comprises of a combination of a meaningful English word and numbers - arunumd/Phone-Number-to-Word
Author   arunumd
🌐
Boxentriq
boxentriq.com › home › code-breaking › numbers to letters
Numbers to Letters Converter | Boxentriq
Convert numbers into letters instantly! Just type or paste your numbers, choose language and code type, and see the text appear. Any invalid or-non-convertible numbers are shown as #. Your data stays local. Switch to 🔀 Letters to Numbers.
🌐
SEO Magnifier
seomagnifier.com › numbers-to-words-converter
Numbers to Words Converter Online [100% Free] | SEO Magnifier
Need a quick way to convert numbers into words? Try this online tool for free! Simply enter a number and convert it to words at your convenience.
🌐
Microsoft Store
apps.microsoft.com › detail › 9wzdncrdxc7r
Number-Words - Free download and install on Windows | Microsoft Store
The telephone dial-pad alphabet is often used as a mnemonic, to help people remember numeric codes. This application has two features. Enter letters and see the resulting dial-pad number, or enter a number and see all resulting possible combinations ...
🌐
Cprogramming
cboard.cprogramming.com › c-programming › 96531-phone-number-word-conversion-program.html
Phone number to word conversion program
December 2, 2007 - Here it goes: Write a C program that, given a seven-digit number, writes to a file every possible seven-letter word (does not have to be a real word, no dictionaries required) corresponding to that number, i.e. 2=abc 3=def, and so on. There are 2187 such words for each phone numer.
🌐
LeetCode
leetcode.com › problems › letter-combinations-of-a-phone-number
Letter Combinations of a Phone Number - LeetCode
Can you solve this real interview question? Letter Combinations of a Phone Number - Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answer in any order. A mapping of digits to letters (just like on the ...
🌐
Number2word
number2word.com
Number2Word - Phone number to word conversion
Each key on your phone correspond to 3-4 letters. Here you can quickly find the letter combinations/words that correspond to a given number.
🌐
Reddit
reddit.com › r/nancydrew › phone numbers as words master list
r/nancydrew on Reddit: Phone numbers as words master list
June 20, 2025 -

Can we assemble a master list of ND phone numbers and what they spell out?

For example:

  • Bess: -4468 = hint

  • Ned: -4357 = help

  • George: -2583 = clue

But what about others?

I’m currently playing White Wolf, so here are my contributions:

  • Tino Balducci: -5375 = jerk

  • Chantal (ICE): -2274 = cash

🌐
Word2number
word2number.com
Word2Number - Word to phone number conversion
Number2Word.com - Phone number to word conversion.