1

使用 php preg_replace。

试过:

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

输出:

|?123

我需要的:

|?????????123

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


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

4

5 回答 5

2

如果没有正则表达式,您可能会更容易做到这一点,利用strspn

$whitespaceCount = strspn($test, " \t\r\n");
$test = str_repeat("?", $whitespaceCount).substr($test, $whitespaceCount);
于 2013-03-04T11:36:58.803 回答
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 
于 2013-03-04T11:37:26.883 回答
0

为什么你不试试这个:

echo '|' . preg_replace('/\s/','?','    123');
于 2013-03-04T11:37:52.993 回答
0

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

$test = "      123";
$test = preg_replace("/\s/","?",$test);
echo '|' . $test;
于 2013-03-04T11:39:51.027 回答
0
$test = "      123";
$test = preg_replace("/^[ ]|[ ]/","?",$test);
echo '|' . $test;
于 2013-03-04T11:39:56.983 回答