使用php preg_replace。
尝试:
$test = " 123";
$test = preg_replace("/^\s/","?",$test);
echo '|' . $test;
输出:
|? 123
我需要什么:
| ??????? 123
还尝试了另一种变体,但它们都只替换了FIRST空间或ALL-IN-ONE ......
不应触及字符串内部或字符串末尾的空格。
答案 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;