爲什麼會變成這樣的代碼的Preg替換的模式陣列無法按預期工作
$my_replacements = array("my dog", "doga");
$my_string = "doga my dog test";
$my_patterns = array_map(function($my_text) { return "/(^|[\n\r\f\t \.\,])" . trim($my_text) . "([\n\r\f\t \.\,]|$)/iu"; }, $my_replacements);
$replaced_string = preg_replace($my_patterns, '', $my_string);
echo $replaced_string;
回報dogatest
,而不是test
?
但是,如果my_string更改爲"my dog doga test"
,它會正確替換my_replacements中的兩個元素嗎?
我想完成的是,給定一個字符串,找到$ my_replacements中的所有字符串,並從字符串中刪除它們。考慮到/ u修飾符和/ i修飾符或preg_replace,因爲可能發生子字符串大寫,並且必須以任一方式刪除它。
可以請你做一個print_r的my_patterns數組嗎? '$ my_text'有什麼價值? – Naryl