您可以使用str_replace
這可能需要一個搜索和替換值的數組。替換值數組可以使用array_map
從搜索字符數組中輕鬆構建。
參見PHP demo:
$array=["a","b","c","d","e","f","g","h","i","j"];
$repl = array_map(function ($i) { return $i."!"; }, $array);
$long_string="yada yada yada yada yada....";
echo str_replace($array, $repl, $long_string);
// => ya!d!a! ya!d!a! ya!d!a! ya!d!a! ya!d!a!....
甲正則表達式的方法(如果搜索項是單字母字符):
$array=["a","b","c","d","e","f","g","h","i","j"];
$long_string="yada yada yada yada yada....";
$rx = "[" . implode("", $array) . "]";
echo preg_replace('/'.$rx.'/', '$0!', $long_string);
見PHP demo。正則表達式將是/[abcdefghij]/
(與單個字符相匹配的字符類),並且替換字段包含添加到每個匹配的整個匹配($0
)和!
符號的反向引用。
如果你的搜索條目的多個字符的字符串,可以包含非字字符,它是使用更安全的交替組和preg_quote項目(demo):
$rx = "(?:" . implode("|", array_map(function($i) {return preg_quote($i, "/");}, $array)) . ")";
echo preg_replace('/'.$rx.'/', '$0!', $long_string);
正則表達式看起來像(?:a|b|c|d|e|f|g|h|i|j)
然後。
所有正則表達式可以在regex101.com測試。
感謝你爲這個Wiktor的。如果角色說出這些:。 ;/\() –
最後的解決方案將工作。儘管對於單個字符,您可以將最後一個與第一個結合起來。 '$ rx =「[」。 implode(「」,array_map(function($ i){return preg_quote($ i,「/」);},$ array))。 「]」;' –
謝謝你,現在回家吧,當我進來的時候會試試。 –