【发布时间】:2016-02-02 17:24:27
【问题描述】:
我正在尝试查找出现在某些单词之后的字符串中的数字,并将前导零放在数字前面。
例如。 Apt 4, John Ave 应该是Apt 0004, John Ave Block 52, Lane Drive 应该是Block 0052 Lane Drive
注意:我只想添加前导 0 使其成为 4 位数字
我的代码部分有效但是它正在用前导零替换它找到的所有数字。我认为 preg_replace 应该能够以更好的结果实现这一目标。
$s = '23 St John Apt 92 rer 4, Wellington Country Block 5 No value test 54545 tt 232';
preg_match_all('/Apartment\s[0-9]+|Apt\s[0-9]+|Block\s[0-9]+|Department\s[0-9]+|Lot\s[0-9]+|Number\s[0-9]+|Villa\s[0-9]+/i', $s, $matches);
var_dump ($matches);
foreach($matches[0] as $word)
{
preg_match_all('!\d+!', $word, $matches2);
foreach($matches2[0] as $value)
{
$value = trim($value);
if(strlen($value) == 1)
{
$s= str_replace($value, "000".$value, $s);
}
else if(strlen($value) == 2)
{
$s= str_replace($value, "00".$value, $s);
}
else if(strlen($value) == 3)
{
$s= str_replace($value, "0".$value, $s);
}
else
{
//nothing
}
}
}
echo $s;
【问题讨论】:
-
您是否希望添加
0只是为了使它们成为四位数字? -
是的,我只想添加前导 0 以使其成为 4 位数字。
标签: regex preg-replace preg-match preg-match-all preg-replace-callback