我使用的字符串如下:
$string = "2017 MODEL YEAR 6.7L POWER STROKE V8 DIESEL 6-SPEED AUTO TRANS 3.55 ELECTRONIC LOCKING AXLE FX4 OFF-ROAD PACKAGE .SKID PLATES 10000-lb. GVWR PACKAGE";
字符串中是字符串10000-lb. GVWR PACKAGE
。我的目标是将number_format
应用于10000,以便字符串显示为10,000-lb. GVWR PACKAGE
。
我一直在使用preg_replace
进行测试,可以使用以下方式获取该号码:
preg_replace('!\d+-lb\.!', '\0', $string);
我尝试应用number_format
,如:
preg_replace('!\d+-lb\.!', number_format('\0'), $string);
但收到以下错误:
number_format() expects parameter 1 to be float, string given
将intval()
应用于匹配将返回0而不是预期的10,000。
我不知道该怎么办。我已经确定的问题是,我不希望在2017年第一次应用数字格式。我是否需要将preg_match
调整为不具体或可能在{1}}内应用preg_match
首先preg_match
才能获得该号码?
答案 0 :(得分:3)
解决这个问题的一种方法是匹配两个单独的\ d。# 第一个是一个或多个数字,第二个是正好三位数。
然后我使用str_replace来替换字符串中的数字。
$string = "2017 MODEL YEAR 6.7L POWER STROKE V8 DIESEL 6-SPEED AUTO TRANS 3.55 ELECTRONIC LOCKING AXLE FX4 OFF-ROAD PACKAGE .SKID PLATES 10000-lb. GVWR PACKAGE";
Preg_match("/(\d+)(\d{3})-lb/", $string, $match);
$find = $match[0];
$replace = $match[1] .",". $match[2] ."-lb";
Echo str_replace($find, $replace, $string);
https://3v4l.org/HvAjg
这适用于数字1000+,如果你需要1000以下的数字,那么它需要一些调整。告诉我,我会解决它。