PHP从字符串中提取价格

时间:2014-04-16 18:19:26

标签: php

我有一个包含字符串的数组。每个字符串的组成都不同,但每个字符串都有一个价格。

下面是一个示例字符串。

“10/22 I-TAC 22LR TACTICAL TALO GREY - 299.99美元已发货”

我正在尝试从此字符串中删除价格并创建此字段。

“10/22 I-TAC 22LR TACTICAL TALO GRAY - 发货”

我已经尝试过正则表达式函数,甚至尝试提出自定义函数,但我无法弄明白。

非常感谢所有帮助。

3 个答案:

答案 0 :(得分:5)

preg_replace('/\$\d+\.\d{2}\s*/', '', $string);

这将删除一个美元符号,后跟数字,后跟一个小数点,另外两个数字和可选的空格。

如果您使用逗号显示价格,或者分数是可选的,您可能需要调整此值。

答案 1 :(得分:1)

我使用this expression

[$]\d+[\d,.]*\s*

匹配一个美元符号([$]),后跟至少一个数字(\d+),后跟任何其他数字/小数/逗号([\d,.]*),最后是任意数字额外的空白。

我将十进制/逗号解析为空中,因为有些国家的格式如下:$1.999,99

在PHP中,使用preg_replace()

echo preg_replace('/[$]\d+[\d,.]*\s*/', '', '10/22 I-TAC 22LR TACTICAL TALO GREY - $299.99 shipped');
// 10/22 I-TAC 22LR TACTICAL TALO GREY - shipped

答案 2 :(得分:1)

如果您确定订单(不是非常推荐),您可以尝试分解字符串并验证此字符串块以" $"

开头
$str = "xx xxx xx xx $1235.00";
$str = explode($str," ");
$num = ($str[4][0] == "$") ? str_replace("$","", $str[4]) : 0.00;

我还没有接受过测试,但是这样做可以解决问题。