Php 在字符串中填充空格
我有一个包含许多行的字符串,例如:Php 在字符串中填充空格,php,arrays,regex,Php,Arrays,Regex,我有一个包含许多行的字符串,例如: $str = 'A 1 AAA BBB 2 CCC DDD B 1 EEE FFF C 1 GGG HHH'; 我想这样填补空白: A 1 AAA A 1 BBB A 2 CCC A 2 DDD B 1 EE
$str = 'A 1 AAA
BBB
2 CCC
DDD
B 1 EEE
FFF
C 1 GGG
HHH';
我想这样填补空白:
A 1 AAA
A 1 BBB
A 2 CCC
A 2 DDD
B 1 EEE
B 1 FFF
C 1 GGG
C 1 HHH
我如何使用php实现它
我的代码:您可以尝试使用和regex来维护组索引
$re = '/^\h*(?|(\S+)\h+(\S+)\h+(\S+)|()(\S+)\h+(\S+)|()()(\S+))\s*$/m';
);用上面最后一个非空值填充第1列和第2列中的空值
$str = preg_replace_callback($re, function($m) use (&$prev)
{
// set empty values if previous not empty
if($m[1]==="" && $prev[1] !== "") $m[1] = $prev[1];
if($m[2]==="" && $prev[2] !== "") $m[2] = $prev[2];
// store previous value
if($m[1]!=="") $prev[1] = $m[1];
if($m[2]!=="") $prev[2] = $m[2];
// newly formatted
return $m[1] . " " . $m[2] . " " . $m[3];
}, $str);