我有一个包含字符串的数组。每个字符串的组成都不同,但每个字符串都有一个价格。
下面是一个示例字符串。
“10/22 I-TAC 22LR TACTICAL TALO GREY - 299.99美元已发货”
我正在尝试从此字符串中删除价格并创建此字段。
“10/22 I-TAC 22LR TACTICAL TALO GRAY - 发货”
我已经尝试过正则表达式函数,甚至尝试提出自定义函数,但我无法弄明白。
非常感谢所有帮助。
答案 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;
我还没有接受过测试,但是这样做可以解决问题。