1

PHP preg_replace を使用します。

試した:

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

出力:

|? 123

必要なもの:

|???????123

別のバリアントも試しましたが、それらはすべて最初のスペースまたはオールインワンのみを置き換えます...


文字列の内側または文字列の末尾にあるスペース - 触れないでください。

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

^これを試してみてください:文字列の先頭をチェックするパターンから削除すると、最初のスペースのみが置き換えられます (1 つのスペースのみ)。

$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 に答える