如何在php中使用preg_replace用每个唯一值替换多次出现

我在一个段落中有一些词,我想使用 PHP preg_replace() 函数将所有词替换为不同的值,并且我使用以下代码片段解决但无法解决该问题。


$str = "abc abc abc abc abc abc";

$strArr = ["xyz", "pqr", "mnl", "01j", "pqr", "lmn"];


$count = preg_match_all("/abc/is", $str, $matches);

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

    preg_replace('/abc"([^\\"]+)"/', $strArr[$i], $str);

}

// At the end I need to get like as following

$str = "xyz pqr mnl 01j pqr lmn";

它只替换了第一次出现。


慕森卡
浏览 124回答 1
1回答

慕斯709654

你可以这样做preg_replace_callback:$str = "abc abc abc abc abc abc";$strArr = ["xyz", "pqr", "mnl", "01j", "pqr", "lmn"];$count = 0;echo preg_replace_callback(&nbsp; &nbsp; '/abc/',&nbsp; &nbsp; function ($v) use ($strArr, &$count) {&nbsp; &nbsp; &nbsp; &nbsp; return $strArr[$count++];&nbsp; &nbsp; },&nbsp; &nbsp; $str);甚至没有计数器:echo preg_replace_callback(&nbsp; &nbsp; '/abc/',&nbsp; &nbsp; function ($v) use (&$strArr) {&nbsp; &nbsp; &nbsp; &nbsp; return array_shift($strArr);&nbsp; &nbsp; },&nbsp; &nbsp; $str);
打开App,查看更多内容
随时随地看视频慕课网APP