3 回答

TA貢獻1848條經驗 獲得超6個贊
\G
為了勝利!
https://www.regular-expressions.info/continue.html
\G
將匹配字符串的開頭并繼續匹配,直到無法匹配為止。
從字符串的開頭匹配一個零,然后一次一個地匹配后面的每個零。將每個匹配的零替換為空格。
代碼:( 輸出:'??10'

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;

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;
- 3 回答
- 0 關注
- 180 瀏覽
添加回答
舉報