PHP如何删除字符串中指定单词的最后一次出现
PHP删除字符串中指定单词最后一次出现的实现方法
核心思路
先定位目标内容最后一次出现的位置,再通过字符串拼接/替换完成删除,无需遍历所有匹配项,性能最优。
方法1:字符串函数实现(推荐,性能更高)
适合明确需要匹配连续字符、不需要严格校验独立单词的场景:
$string = 'bla test bla test bla test bla test bla'; $search = 'test'; // 查找最后一次出现的位置,大小写敏感;需要不敏感可替换为strripos $lastPos = strrpos($string, $search); if ($lastPos !== false) { // 从最后出现位置开始,替换长度为搜索词长度的内容为空 $string = substr_replace($string, '', $lastPos, strlen($search)); // 若要删除单词后连带的空格,可将上面的长度改为 strlen($search) + 1,避免最终出现多余空格 } // 输出结果:bla test bla test bla test bla bla echo $string;
方法2:正则实现(适合需要匹配独立单词的场景)
如果要避免把test123、atest这类包含目标字符的内容误匹配,需要严格匹配独立单词时使用:
$string = 'bla test bla test bla test bla test bla'; $search = 'test'; // \b为单词边界,?!为负向预查,确保后面没有相同的单词出现 $pattern = '#\b' . preg_quote($search, '#') . '\b(?![\s\S]*\b' . preg_quote($search, '#') . '\b)#'; // 不区分大小写可以加i修饰符,即 $pattern = '#...#i'; // 要连带删除单词后多余空格,可在匹配词后加\s?:$pattern = '#\b'...'\b\s?(?
