Я вижу два способа сделать это: вы можете использовать регулярные выражения (медленнее) или взрываться (быстрее, но менее точно). Преимущество состоит в том, что, если кто-то удаляет пробелы из строки, RegEx все равно будет работать, а разрыв может внезапно прерваться.
$src = "You can win tonight $200,000. Sign up now!";
function get_amount($from){
$src_tkns = explode(' ', $from);
foreach($src_tkns as $tkn){
if(substr($tkn, 0, 1)==='$'){
return (substr($tkn, -1, 1)=='.')?substr($tkn, 0, -1):$tkn;
}
}
return false;
}
function get_amount_regex($from){
$r = '/\$[-+]?[0-9]*(\,?[0-9]+)+/';
preg_match_all($r, $from, $res);
return is_array($res)?$res[0][0]:false;
}
print('Found: '.get_amount($src).'<br />');
print('Regex Found: '.get_amount_regex($src));
Подробнее о регулярных выражениях и их использовании на странице PHP PCRE по адресу http://www.php.net/manual/en/book.pcre.php и на информационном сайте регулярных выражений по адресу http://www.regular -expressions.info / tutorial.html
Стоит отметить, что приведенный выше код не является оптимальным или все ловит, когда дело доходит до ошибок. Убедитесь, что вы выполняете тесты с известными действительными и недопустимыми строками, прежде чем использовать их для какой-либо критической работы:)