紧凑的nl2br占两者

时间:2014-11-28 17:16:32

标签: php regex

我正在尝试创建一个类似于nl2br的函数,除非我希望此函数仅在\n 跟随<br />时才有效。我希望这些场景

*\n*       ->    <br>
*<br>\n*   ->   nothing
*<br>*   ->   nothing

在伪代码中我 思考;

if (regex !== <br>\n && regex === *<br>)

但除非!<br>位在正则表达式本身内,否则这没有意义。简单地说正则表达式正在融化我的大脑,弄清楚在正则表达式中排除正则表达式。

1 个答案:

答案 0 :(得分:1)

所以,比如:

<?php
  $test = "This\nis\na<br>\ntest";
  $result = preg_replace('/(?<!<br>)\n/', "<br>", $test);
  print_r($result);

结果:

This<br>is<br>a<br>
test

这会使用regular expression feature called "negative lookbehind"来查看换行符是否在其前面有<br>