使用 php preg_replace。
试过:
$test = " 123";
$test = preg_replace("/^\s/","?",$test);
echo '|' . $test;
输出:
|?123
我需要的:
|?????????123
还尝试了另一种变体,但它们都只替换了 FIRST 空格或 ALL-IN-ONE ......
字符串内部或字符串末尾的空格 - 不应触摸。
使用 php preg_replace。
试过:
$test = " 123";
$test = preg_replace("/^\s/","?",$test);
echo '|' . $test;
输出:
|?123
我需要的:
|?????????123
还尝试了另一种变体,但它们都只替换了 FIRST 空格或 ALL-IN-ONE ......
字符串内部或字符串末尾的空格 - 不应触摸。
如果没有正则表达式,您可能会更容易做到这一点,利用strspn
:
$whitespaceCount = strspn($test, " \t\r\n");
$test = str_repeat("?", $whitespaceCount).substr($test, $whitespaceCount);
<?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
为什么你不试试这个:
echo '|' . preg_replace('/\s/','?',' 123');
试试这个:^
从检查字符串开头的模式中删除,所以会发生什么它只替换开头的空格(只有一个空格)
$test = " 123";
$test = preg_replace("/\s/","?",$test);
echo '|' . $test;
$test = " 123";
$test = preg_replace("/^[ ]|[ ]/","?",$test);
echo '|' . $test;