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

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

php如何用preg_replace動態替換字符串范圍?

php如何用preg_replace動態替換字符串范圍?

PHP
墨色風雨 2022-06-17 14:22:07
我想使用 preg_replace 動態替換字符范圍。例如 D01 到 D99 我想用空白替換這個字符串范圍,而 M01 到 M99 想用<br/>標簽替換它。我正在嘗試使用靜態值數組替換它。這是我的代碼。$str1 = "This is mystrD01 and this is D03just for testingD02.M01Loream ipsum text1M02loream ipsum text2";$arr1 = array("D01","D02","D03","D04","M01","M02","M03");$replaceArr = array("","","","","<br/>","<br/>","<br/>");echo str_replace($str_arr1,$replace_arr2,$str2);
查看完整描述

2 回答

?
HUWWW

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);


查看完整回答
反對 回復 2022-06-17
?
POPMUISE

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/>"]


查看完整回答
反對 回復 2022-06-17
  • 2 回答
  • 0 關注
  • 126 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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