php和regex,如果用户输入它,如何剥离美元符号和百分号?

时间:2013-01-06 20:18:26

标签: php regex ereg-replace

基本上,这需要做的只是接受价格值,只能是40或39.95或100.09或4等,如果用户在字段中输入除了数字以外的任何内容,则会返回错误。

我的问题:我如何更改它,以便如果用户在输入字段中输入一个美元符号,它只是被剥离而不是在该特定情况下返回错误?


if (ereg_replace('/^\d+(\.\d{2})?$/', $_POST['itemAmt'])) {
    echo '<h1>The original cost of the item: $' . $_POST['itemAmt'] . ' </h1>';
} else {
    echo '<h1 style="color:red; font-weight:900;">The price value was not numeric, try again :) </h1><br>';
}

3 个答案:

答案 0 :(得分:6)

$itemAmt = str_replace(array('$', '%'), '', $_POST['itemAmt']);

答案 1 :(得分:2)

preg_replace('#[^0-9\.]+#','',$_POST['itemAmt']);

答案 2 :(得分:0)

可能的方式

if ( preg_match( '/^(\d+(?:\.\d+)?)[\$%]?$/', $_POST['itemAmt'] ) ) {
    $validprice = preg_replace( '/^(\d+(?:\.\d+)?)[\$%]?$/', '\1', $_POST['itemAmt'] );
} else {
    // invalid input
}