亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP 用相同數量的空格替換前導零

PHP 用相同數量的空格替換前導零

PHP
絕地無雙 2023-07-01 15:25:46
我想用帶有 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)
查看完整描述

3 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

\G為了勝利!

https://www.regular-expressions.info/continue.html

\G將匹配字符串的開頭并繼續匹配,直到無法匹配為止。

從字符串的開頭匹配一個零,然后一次一個地匹配后面的每個零。將每個匹配的零替換為空格。

代碼:(

輸出:

'??10'


查看完整回答
反對 回復 2023-07-01
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

我不知道如何使用正則表達式更輕松地做到這一點,但是您可以使用以下方法使其他代碼更加簡潔str_repeat:


$pin = '0010';

$temp = ltrim($pin, '0');

$spaces = strlen($pin) - strlen($temp);

$new_pin = str_repeat(' ', $spaces) . $temp;

echo $new_pin;


查看完整回答
反對 回復 2023-07-01
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

你說:

但如果可能的話我正在尋找更有效的東西

  • 首先,請注意單行不一定有效(正如您嘗試的 preg_replace() 一樣,正則表達式實際上有點慢,因為它首先被編譯)。

  • 其次,您可以更好地采用對字符串進行兩次傳遞的方法。這也可以就地編輯字符串,而無需額外的字符串變量,這在您的情況下是理想的。

片段:

<?php


$str = '000010';

$len = strlen($str);


for($i = 0; $i < $len; ++$i){

    if($str[$i] == '0'){

        $str[$i] = ' ';

    }else{

        break;

    }

}


echo $str;




查看完整回答
反對 回復 2023-07-01
  • 3 回答
  • 0 關注
  • 180 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號