3v4l.org

run code in 300+ PHP versions simultaneously
<?php $prices = array(chr(8364).' 45.000,-', '45 USD', 'CHF 0,77', chr(36).' 23000', 'USD 23000', '46.000,95', '6', '4,3', chr(8364).' 45,00', chr(36).' 46foobar', chr(8364).' 45,-', chr(8364).' 45', chr(8364).' 45,00', '45 '.chr(8364), '45,- '.chr(8364), '45,00 '.chr(8364), '45.000 '.chr(8364), chr(36).' 45.000,--', chr(8364).' 4.000,00', 'hallo welt', '20.00 €'); $currencies = '(?:EUR|USD|GBP|CHF|FR|SFR|\\'.chr(8364).'|\\'.chr(36).'|\\'.chr(163).')'; $price = '(?:(?:(?:[1-9][0-9]{0,2}(?:\.|,)?)+(?:[0-9]{3})|(?:[0-9]|[1-9][0-9]{1,2}))(?:(?:\.|,)(?:[0-9]{2}|\-{1,2}))?)'; $regex = '(?:^|\s+)(?:(?:(?:'.$currencies.'\s?)'.$price.')|(?:'.$price.'(?:\s?'.$currencies.')))(?:\s+|$)'; foreach($prices as $check) { echo str_pad($check, 15, ' ', STR_PAD_RIGHT).' '.(preg_match('/'.$regex.'/i', $check, $match) ? 'matched: ' : 'did not match.').(count($match) ? $match[0] : '')."\n"; }

preferences:
40.01 ms | 402 KiB | 5 Q