我需要能够从几个变量中删除字符,只留下数字和£
符号(除非mysql本身可以添加它?)以及任何.
分隔符。
所以如果变量$price_data contains
Now £193.95
我最终如何使用
193.95
?
我需要这样做的原因是我需要能够以十进制的形式将数据插入到字段中,并且能够从最少到最昂贵地安排数据。
答案 0 :(得分:1)
试试这个:
$price_data = "Now £193.95";
list($t, $price) = explode('£',$price_data);
//$price should now contain 193.95
这是一个演示:http://codepad.org/az87F5wA
答案 1 :(得分:1)
根据输入数据,删除任何前导或尾随非数字可能更可靠:
$price = preg_replace('_^\D+|\D+$_', "", $price_data);
如果用数字括起来,它将留在点中,并且可以使用文字£
以及£
转义符,并删除任何尾随垃圾。
答案 2 :(得分:1)
财务数据应存储为整数,而不是由于浮动数据类型的精度损失而浮动:http://en.wikipedia.org/wiki/Precision_(computer_science)
因此,您应该使用以下代码将其作为整数(代表美分)存储在MySQL中,以仅提取数字:
$subject = 'Now £193.95';
preg_match_all('/\\d/', $subject, $result, PREG_PATTERN_ORDER);
$result = implode( '', $result[0] );
if( !empty($result) ){
$result = intval($result);
}else{
$result = 0;
}
var_dump( $result );
另外,在对整数类型执行除法时要小心,因为你可以“失去分数”。
HTH