为什么这段代码
$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,因为子字符串可能是大写的,并且必须以任何一种方式将其删除。