我想用
相同的出现次数替换前导空格,即
位说明:
如果输入中存在一个前导空格,则它应替换为一个
如果输入中存在两个前导空格,则它应替换为两个
如果输入中存在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正则表达式替换前导空格。
欢迎您提出建议。
由于
答案 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)
答案 3 :(得分:0)
使用preg_match并设置PREG_OFFSET_CAPTURE标志,偏移量是“空格”的长度。然后使用str_repeat和偏移量。