如果没有任何东西是如何匹配的话

时间:2015-12-05 04:50:31

标签: php html

问题,我在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;'

3 个答案:

答案 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;