将 BR 标签转换为文本区域中的新行

converting BR tags into new lines in a textarea

这是我创建的一个函数,它应该将每个 Br 换行符转换为 \n:

function br2nl($st){
    return preg_replace('/<br(\s+)?\/?>/i', "\n", $st);
}

然而,输出是这样的:

foo

bar

nuts

我希望它输出如下内容:

foo <br>
bar <br>
nuts

可能你的 HTML 是

foo<br>
bar<br>
nuts<br>

所以你已经有了 "\n" 并将 br 替换为 "\n" 你最终得到了双 "\n" like

foo \n\n bar \n\n nuts

看起来像

foo

bar

nuts

为了接收您建议的输出 - 您需要从输入 HTML 中删除“\n”,然后将 br 替换为“\n”

代码为

function br2nl($st){
  $st_no_lb = preg_replace( "/\r|\n/", "", $st );
  return preg_replace('/<br(\s+)?\/?>/i', "\n", $st_no_lb);
}