[英]PHP Replace Leading Zeros with Same Number of Spaces
我想用帶有 3 個空格的“1”替換像 0001 這樣的字符串。
我試過 str_replace 但這在 0010 上不起作用。我試過一些 preg_replace 但無法獲得替換權來替換相同的號碼
我已經寫了這個基本的東西並且它有效,但如果可能的話,我正在尋找更有效的東西。
$pin = '0010';
$temp = ltrim($pin, '0');
$spaces = strlen($pin) - strlen($temp);
for ($x=1;$x<=$spaces;$x++) $temp = ' '.$temp;
echo $temp;
我最接近 preg_replace 的是這個,但我不確定如何替換:
preg_replace('/0+/', ' ', $pin)
\G
為勝利!
https://www.regular-expressions.info/continue.html
\G
將匹配字符串的開頭並繼續匹配,直到無法匹配為止。
從字符串的開頭匹配一個零,然后一次匹配后面的每個零。 用空格替換每個匹配的零。
代碼:(演示)
$pin = '0010';
var_export(preg_replace('~\G0~', ' ', $pin));
Output:
' 10'
我看不出如何使用正則表達式更容易做到這一點,但您可以使用str_repeat
使您的其他代碼更簡潔:
$pin = '0010';
$temp = ltrim($pin, '0');
$spaces = strlen($pin) - strlen($temp);
$new_pin = str_repeat(' ', $spaces) . $temp;
echo $new_pin;
你說:
但如果可能的話,我正在尋找更有效的東西
片段:
<?php
$str = '000010';
$len = strlen($str);
for($i = 0; $i < $len; ++$i){
if($str[$i] == '0'){
$str[$i] = ' ';
}else{
break;
}
}
echo $str;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.