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
。我的目标是将 number_format
应用于 10000,以便字符串显示为 10,000-lb. GVWR PACKAGE
.
我一直在用 preg_replace
进行测试,可以使用以下方法获取号码:
preg_replace('!\d+-lb\.!', '[=13=]', $string);
我尝试应用 number_format
如:
preg_replace('!\d+-lb\.!', number_format('[=14=]'), $string);
但收到以下错误:
number_format() expects parameter 1 to be float, string given
将 intval()
应用于匹配 returns 0 而不是预期的 10,000。
我不确定如何进行。我还确定的问题是,我不希望将数字格式应用于第一个 2017 年。我是否需要调整 preg_match
使其不那么具体,或者可能将 preg_match
应用于先preg_match
只取号?
绕过它的一种方法是匹配两个单独的 \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 以下的数字,则需要进行一些调整。告诉我,我会解决的。
我正在使用如下字符串:
$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\.!', '[=13=]', $string);
我尝试应用 number_format
如:
preg_replace('!\d+-lb\.!', number_format('[=14=]'), $string);
但收到以下错误:
number_format() expects parameter 1 to be float, string given
将 intval()
应用于匹配 returns 0 而不是预期的 10,000。
我不确定如何进行。我还确定的问题是,我不希望将数字格式应用于第一个 2017 年。我是否需要调整 preg_match
使其不那么具体,或者可能将 preg_match
应用于先preg_match
只取号?
绕过它的一种方法是匹配两个单独的 \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 以下的数字,则需要进行一些调整。告诉我,我会解决的。