2 回答

TA貢獻1874條經驗 獲得超12個贊
有preg_replace_callback可用的,這通常是進行任何動態替換的最佳方法。將它與類似的模式一起使用,([DM])\d\d(?!\d)并根據捕獲替換。
$new_str = preg_replace_callback('/([DM])\d\d(?!\d)/', function($m) {
return $m[1]=="D" ? "" : '<br/>';
}, $str1);
在 tio.run 上查看這個 PHP 演示 (前瞻用于不匹配例如D001)
使用回調的好處是,您在處理捕獲的值時范圍很廣。單獨的正則表達式不適合匹配數字范圍,但可以很容易地被任何函數進一步檢查。
無論如何,您的示例任務也可以通過preg_replace數組來完成。
$new_str = preg_replace(['/D\d\d(?!\d)/', '/M\d\d(?!\d)/'], ["", '<br/>'], $str1);

TA貢獻1765條經驗 獲得超5個贊
您可以preg_replace在數組上使用正則表達式匹配。
D\d*將匹配“D”,然后匹配任意數量的數字。
$arr1 = array("D01","D02","D03","D04","M01","M02","M03");
$arr1 = preg_replace("/D\d*/", '', $arr1);
$arr1 = preg_replace("/M\d*/", '<br />', $arr1);
輸出 -
["","","","","<br/>","<br/>","<br/>"]
- 2 回答
- 0 關注
- 126 瀏覽
添加回答
舉報