猿问

Preg_replace 带有可选的换行符

我目前正在努力解决正则表达式。我处理的一些字符串末尾有换行符,有些则没有。但我希望这些换行符位于我添加的 html 之外。起初,我的正则表达式中没有换行符代码,但后来换行符在结束标记之前返回。我用当前代码修复了这个问题,但现在它不再正确处理末尾没有换行符的字符串。

因此,我尝试更改我的代码,以在存在换行符时返回换行符,但在没有换行符时也处理字符串。

我当前的代码:

preg_replace('/^(m:|maken:)(.*)([\r\n])/i', $makenblokje . '<em class="markeerroze">$2</em>$3', $regel, 1, $teller);
                               ^^^^^^^^                                                    ^^

我认为解决方案应该在下划线部分,但我还无法用我正在寻找的结果来修复它。


叮当猫咪
浏览 149回答 2
2回答

潇湘沐

您可以通过在模式后面加上 a 将模式设为可选(即允许有 0 或 1 个实例)?,因此这应该可以为您完成:'/^(m:|maken:)(.*)([\r\n])?/i'但我认为删除所有传入的换行符会更容易,无论如何它们都不会在输出中呈现。

慕勒3428872

[\r\n]匹配\r或\n.&nbsp;为了匹配任何类型的换行符,请使用\R和?使其可选:preg_replace('/^(m:|maken:)(.*)(\R?)/i',&nbsp;$makenblokje&nbsp;.&nbsp;'<em&nbsp;class="markeerroze">$2</em>$3',&nbsp;$regel,&nbsp;1,&nbsp;$teller);
随时随地看视频慕课网APP
我要回答