如何在包含大量<br />
的字符串中为替换乘法<br />
创建preg_match模式。
这是替换的条件
1如果只有一个或两个<br />
没有替换。
$str = "line 1<br />line 2<br /><br />line 3";
$result = "line 1<br />line 2<br /><br />line3";
2如果有两个以上<br />
将它们替换为双倍。
$str = "line 1<br />line 2<br /><br /><br />line3<br /><br />";
$result = "loading<br />checking<br /><br />line3<br /><br />";
包含因为我的条件意味着我将允许最多两个<br />
我已尝试过,但它会将所有<br />
替换为仅一个。
$detail = nl2br(addslashes($_POST['detail']));
$detail = preg_replace('#(<br */?>\s*)+#i', '<br />', $detail);
我之前也搜索过这个,但没有找到任何帮助。我可能没有使用preg_replace。所以,我需要你的帮助,真的很感激。谢谢。
答案 0 :(得分:2)
使用此代码:
$detail = preg_replace('#(<br\s*\/?>\s*){3,}#i', '<br /><br />', $detail);
将<br>
,<br/>
,<br />
替换为3次(或更多次)并排。它还会照顾它们之间的额外空间。
答案 1 :(得分:0)
如果有两个以上
<br />
将它们替换为双倍。
它可能会帮助您使用替代。
(<br\s?\/>){3,}
示例代码:
$re = "/(<br\\s?\\/>){3,}/i";
$str = "...";
$subst = '<br \/><br \/>';
$result = preg_replace($re, $subst, $str);