替换字符串开头的每个空格

时间:2013-03-04 11:33:00

标签: php preg-replace

使用php preg_replace。

尝试:

$test = "      123";
$test = preg_replace("/^\s/","?",$test);
echo '|' . $test;

输出:

  

|? 123

我需要什么:

  

| ??????? 123

还尝试了另一种变体,但它们都只替换了FIRST空间或ALL-IN-ONE ......


不应触及字符串内部或字符串末尾的空格。

5 个答案:

答案 0 :(得分:2)

使用strspn

,如果没有正则表达式,您可以更轻松地完成这项工作
$whitespaceCount = strspn($test, " \t\r\n");
$test = str_repeat("?", $whitespaceCount).substr($test, $whitespaceCount);

答案 1 :(得分:1)

<?php
$test = "      12 3  s";
$test = preg_replace_callback("/^([\s]*)([^\s]*)/","mycalback",$test);
echo '|' . $test;

function mycalback($matches){
 return str_replace (" ", "?", $matches[1]).$matches[2];
}

?> 

输出:

|??????12 3 s 

答案 2 :(得分:0)

为什么你不试试这个:

echo '|' . preg_replace('/\s/','?','    123');

答案 3 :(得分:0)

试试这个:从模式中删除^来检查字符串的开头,那么会发生什么呢?它只会替换开头的空格(只有一个空格)

$test = "      123";
$test = preg_replace("/\s/","?",$test);
echo '|' . $test;

答案 4 :(得分:0)

$test = "      123";
$test = preg_replace("/^[ ]|[ ]/","?",$test);
echo '|' . $test;