PHP从字符串中提取价格

PHP从字符串中提取价格,php,Php,我有一个数组,里面有字符串。每个字符串的组成都不同,但每个字符串都有一个价格 下面是一个示例字符串 “10/22 I-TAC 22LR战术塔洛灰-299.99美元发货” 我正在尝试从这个字符串中删除价格并创建它 “10/22 I-TAC 22LR战术塔洛灰色-已装运” 我尝试过正则表达式函数,甚至尝试过自定义函数,但我就是想不出来 非常感谢您的帮助 preg_replace('/\$\d+\.\d{2}\s*/', '', $string); 这将删除后跟数字的美元符号、一个小数点、两个以上的

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

下面是一个示例字符串

“10/22 I-TAC 22LR战术塔洛灰-299.99美元发货”

我正在尝试从这个字符串中删除价格并创建它

“10/22 I-TAC 22LR战术塔洛灰色-已装运”

我尝试过正则表达式函数,甚至尝试过自定义函数,但我就是想不出来

非常感谢您的帮助

preg_replace('/\$\d+\.\d{2}\s*/', '', $string);
这将删除后跟数字的美元符号、一个小数点、两个以上的数字以及可选的空白

如果用逗号显示价格,或者美分是可选的,您可能需要对此进行调整。

我使用了:

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

我把小数/逗号解析抛在脑后,因为有些国家的格式是:
$1.999,99

在PHP中,使用:


如果确定顺序(不太推荐),可以尝试分解字符串,并验证此类字符串块是否以“$”开头


我还没有测试过,但这应该可以解决问题。

有没有倒点和逗号的国家使用美元符号?非常有效的一点,我使用了一个字符类,因此可以包括欧元等。诚然,就问题的范围而言,这似乎不是必要的。但OP并没有真正指定一种或另一种方式。欢迎使用SO:)在混合中看到非正则表达式解决方案总是很好的。
[$]\d+[\d,.]*\s*
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
$str = "xx xxx xx xx $1235.00";
$str = explode($str," ");
$num = ($str[4][0] == "$") ? str_replace("$","", $str[4]) : 0.00;