问题,我在html_to_bbcode函数中获得了更多我想要的换行符。
案例:我有一个这样的随机文本。
test<br>
<br>
again something<br>
所以输出应该像
test
again somthing
现在不喜欢
test
again some text
`
我曾经做过
$text = str_replace("<br>","\n",$text);
但是如果之前有文字,它不应该用<br>
替换\n
,因为否则它只是做\ n \ n
编辑案例和预期结果
解决方案就像@Dirk Horsten所说:
$text2 = str_replace("<br />","<br>",$text);
$text = str_replace("<br>","",preg_replace("/^<br>/","\n",$text2));
我需要将代码中的<br />
交换为<br>
,否则会导致警告
preg_replace():未知的修饰符'&gt;'
答案 0 :(得分:0)
<?php
$text="test<br>
<br>
again something<br>";
$text = str_replace("<br>","\n",$text);
echo nl2br($text);
?>
答案 1 :(得分:0)
您的要求超出了字符串替换范围。我建议正则表达式。
如果您想将后续<br>
替换为单个\ n:
$text = $text = preg_replace("(/(<br>\s)+/m)","\n",$text);
如果您只想替换行尾的<br>
,请尝试使用
$text = $text = preg_replace("/^<br>/","\n",$text);
但是一行内部或末尾的<br>
存活,所以可能需要
$text = $text = str_replace("<br>","",preg_replace("/^<br>/","\n",$text));
免责声明:我没有安装php,因此未经过测试。因此,我将其设为社区维基,所以任何人都可以编辑它
答案 2 :(得分:0)
尝试以下代码,
$str = preg_replace_callback(
'/[a-z]{1}<br>/',
function ($matches) {
return $matches[0].'\n';
}, $st);
echo $str;