Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 替换字符串开头的每个空格_Php_Preg Replace - Fatal编程技术网

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

Php 替换字符串开头的每个空格,php,preg-replace,Php,Preg Replace,使用php preg_替换 尝试: $test = " 123"; $test = preg_replace("/^\s/","?",$test); echo '|' . $test; 产出: |??123 我需要的是: |123 还尝试了其他变体,但它们都只替换第一个空格或多功能一体机 不应触摸字符串内部或字符串末尾的空格。如果不使用正则表达式,您可能可以更轻松地执行此操作,利用: 为什么你不试试这个: echo '|' . preg_replace('/\s/','?','

使用php preg_替换

尝试:

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

|??123

我需要的是:

|123

还尝试了其他变体,但它们都只替换第一个空格或多功能一体机



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

如果不使用正则表达式,您可能可以更轻松地执行此操作,利用:


为什么你不试试这个:

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

尝试以下操作:从检查字符串开头的模式中删除
^
,这样只会替换开头的空格(仅一个空格)


这将只替换空格,而且它将在输入字符串中的所有位置都执行此操作,而不仅仅是在开始时。您只需要从正则表达式中删除“^”,这就是为什么您只获得第一个。@BojanKovacevic:如果在结尾处找到空格呢?因为它还替换字符串中的空格,f.ex:“123 456”将返回?123?456,但我需要:“?123 456”但现在它替换了所有空格,而不仅仅是字符串开头的空格。输出是什么?该模式还替换字符串中的空格。
<?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;