Kommen Zahlen aus nicht selbst gepflegten Quellen, können sie in verschiedensten Formaten ankommen. Um sie weiter zu verarbeiten, müssen sie vereinheitlicht werden. Diese Funktion macht das.

function getNumbers($value)
{
	$value = str_replace(' ', '', $value);
	$found = array();
	preg_match('#([^0-9])[0-9]+$#', $value, $found);
	if (empty($found[1]) === false) {
		if (substr_count($value, $found[1]) > 1) {
			return ((float)str_replace($found[1], '', $value));
		}
		switch ($found[1]) {
			case ',':
				$value = str_replace(array('.', ','), array('', '.'), $value);
				break;
			case '.':
				$value = str_replace(',', '', $value);
				break;
		}
	}
	return ((float)$value);
}

 Hier noch ein Codeschnippsel um die Funkion zu testen:

$numbers = array(
	 '-10',
	 '- 10',
	 '.5',
	 '.',
	 '',
	 ' ',
	 ' 5.',
	 '5. ',
	 'abc',
	 '1abc',
	 'abc1',
	 '1000',
	 '1500.12',
	 '1500,12',
	 '1500 12',
	 '150 012',
	 '1 5 0 0 1 2',
	 '1 500,12',
	 '1 500.12',
	 '1500, 12',
	 '1500. 12',
	 '1.500,12',
	 '1,500.12',
	 '-1,500.12',
	 '-1,500,000',
	 '-1,500',
	 '1.500',
	 '-1,50',
	 '-1.500,000',
	 '1500,000,000',
	 '1500.000.000'
);
foreach ($numbers as $val) {
	echo $val . ' - ' . getNumbers($val) . '<br />';
}

 Um Zahlen aus Strings zu extrahieren findet man hier die passende Funktion.