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