Skip to content

Instantly share code, notes, and snippets.

@paranoiq
Created June 15, 2010 20:04
Show Gist options
  • Save paranoiq/439646 to your computer and use it in GitHub Desktop.
Save paranoiq/439646 to your computer and use it in GitHub Desktop.
<?php // regular expression for tokenization of english numerals from 1 to 999.999
$re = "/(?<=\W)(?:(?:(?:(?:(?:(?:(?:(one)|(two)|(three)|(four)|(five)|(six)|(seven)|(eight)|(nine))) )?(hundred)s?)? ?(?:and )?(?:(?:(?:(?:(twenty)|(thirty)|(forty)|(fifty)|(sixty)|(seventy)|(eighty)|(ninety))(?:[- ]?(?:(one)|(two)|(three)|(four)|(five)|(six)|(seven)|(eight)|(nine)))?)|(?:(?:(eleven)|(twelve)|(thirteen)|(fourteen)|(fifteen)|(sixteen)|(seventeen)|(eighteen)|(nineteen)))|(?:(?:(one)|(two)|(three)|(four)|(five)|(six)|(seven)|(eight)|(nine)))|(?:(ten))))?) )?(thousand)s?)? ?(?:(?:(?:(?:(?:(one)|(two)|(three)|(four)|(five)|(six)|(seven)|(eight)|(nine))) )?(hundred)s?)? ?(?:and )?(?:(?:(?:(?:(twenty)|(thirty)|(forty)|(fifty)|(sixty)|(seventy)|(eighty)|(ninety))(?:[- ]?(?:(one)|(two)|(three)|(four)|(five)|(six)|(seven)|(eight)|(nine)))?)|(?:(?:(eleven)|(twelve)|(thirteen)|(fourteen)|(fifteen)|(sixteen)|(seventeen)|(eighteen)|(nineteen)))|(?:(?:(one)|(two)|(three)|(four)|(five)|(six)|(seven)|(eight)|(nine)))|(?:(ten))))?)? ?(?:and)? ?(?:(quarter)|(half)|(three quarter)s?)?(?=\W)/um";
// and tokens
$tokens = array(
'one' => 1,
'two' => 2,
'three' => 3,
'four' => 4,
'five' => 5,
'six' => 6,
'seven' => 7,
'eight' => 8,
'nine' => 9,
'ten' => 10,
'eleven' => 11,
'twelve' => 12,
'thirteen' => 13,
'fourteen' => 14,
'fifteen' => 15,
'sixteen' => 16,
'seventeen' => 17,
'eighteen' => 18,
'nineteen' => 19,
'twenty' => 20,
'thirty' => 30,
'forty' => 40,
'fifty' => 50,
'sixty' => 60,
'seventy' => 70,
'eighty' => 80,
'ninety' => 90,
'hundred' => 100,
'thousand' => 1000,
'quarter' => '0.25',
'half' => '0.5',
'three quarter' => '0.75',
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment