繁体   English   中英

PHP - 字符串中的preg_replace数字

[英]PHP - preg_replace number within string

我正在使用如下字符串:

$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 10000-lb. GVWR PACKAGE 我的目标是将number_format应用于10000,以便字符串读取10,000-lb. GVWR PACKAGE 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不进行具体或可能应用preg_match到匹配的第一个内preg_match只得到多少?

绕过它的一种方法是匹配两个单独的\\ d's。
第一个是一个或多个数字,第二个是正好三位数。

然后我使用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以下的数字,那么它需要一些调整。 告诉我,我会解决它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM