PHP中使用preg_replace删除独立换行指定字符串的问题
解决PHP正则删除独立行"example"的问题
你的原代码无法生效的核心问题有两个:
- 未启用多行模式,正则里的
^和$默认只匹配整个字符串的首尾,而非每行的首尾 - 硬写
\r\n仅适配Windows风格换行,且多余的s修饰符(让.匹配换行)在这里完全没必要
正确代码实现
$new_string = preg_replace('/^example\R$/m', '', $string);
代码说明
/m:开启多行模式,让^匹配每行开头、$匹配每行结尾\R:匹配任意类型换行符(包含\r\n、\n、\r),兼容不同系统的换行格式- 无需
preg_quote('example'),因为目标字符串里没有正则特殊字符 - 移除了无用的
si修饰符,避免不必要的匹配干扰
执行这段代码后,会精准删除独立占一行的"example",同时保留<h2>标签内的"example",完全符合预期结果。
内容的提问来源于stack exchange,提问作者Perfection
相关产品推荐
相关产品推荐

