使用PHP regex将前导空格替换为相同的次数

时间:2010-07-27 10:46:23

标签: php regex

我想用 相同的出现次数替换前导空格,即

位说明:

如果输入中存在一个前导空格,则它应替换为一个 

如果输入中存在两个前导空格,则它应替换为两个 

如果输入中存在n个前导空格,那么它应该用

替换n次
Ex.1:
 My name is XYZ
output:
 My name is XYZ

Ex.2 :
  My name is XYZ
output:
  My name is XYZ

我想使用PHP正则表达式替换前导空格。

欢迎您提出建议。

由于

4 个答案:

答案 0 :(得分:6)

preg_replace('/\G /', ' ', $str);

\G匹配最后一个匹配结束的位置,如果之前没有匹配则匹配字符串的开头。

编辑:实际上,在PHP中,它匹配 next 匹配应该开始的位置。这不一定与上一场比赛结束的地方相同。

答案 1 :(得分:4)

$len_before = strlen($str);
$str = ltrim($str, ' ');
$len_after = strlen($str);
$str = str_repeat(' ', $len_before - $len_after) . $str;

使用preg_replace还有

$str = preg_replace('/^( +)/e', 'str_repeat(" ", strlen("$1"))', $str);

但请注意,它使用/e标记。

请参阅http://www.ideone.com/VWNKZ了解结果。

答案 2 :(得分:0)

使用:

preg_replace('/^ +/m',' ',$str);

You can test it here

答案 3 :(得分:0)

使用preg_match并设置PREG_OFFSET_CAPTURE标志,偏移量是“空格”的长度。然后使用str_repeat和偏移量。