Вот способ заменить и извлечь
Выдержка:
preg_match('/\$([0-9]+[\.]*[0-9]*)/',$string,$matches);
foreach($matches as $match) {
echo $match."<br>";
}
//echo $matches[0]; for just the first match
Изменить / Заменить:
$string = preg_replace_callback('/\$([0-9]+[\.]*[0-9]*)/', function ($matches) {
foreach ($matches as $match) {
// only if value is !empty and higher than 0
$tmp = str_replace("$", "", $match);
if ($tmp > 0 && $tmp != "") {
//do something to $tmp in this case round to two decimal places
return "$" . round($tmp,2);
}
}
}, $string);
Вероятно, есть лучший способ обработки символа в моем примере замены.