替换不在标记内的所有换行实例

时间:2011-06-13 16:13:11

标签: php regex preg-replace

我有一个带有换行符的文本正文,我想用<br />替换不在某些标记内的换行符的所有实例。标签为[something][~something],其中something可以是任何内容。

很抱歉不包括我已尝试过的内容,但我不知道如何让正则表达式匹配其他内容。这甚至可能吗?

1 个答案:

答案 0 :(得分:-1)

虽然记住你不应该用正则表达式解析XML / HTML,这是一个实例:

#!/usr/bin/perl
#

$in = "foo\nbar\nbaz[something]else\nis\n[~something]\nHappening\n[something]else\nis\n[~something]here\n";
$out = "";

while ($in =~ s/^(.*?)(\[something\].*?\[~something\])//s)
{
  my($before,$during) = ($1,$2);
  $before =~ s/\n/<br \/>/g;
  $out .= $before.$during;
}
$in =~ s/\n/<br \/>/g;
$out .= $in;
print $out;

是的,不是您选择的语言,但概念(在删除处理过的数据时,在标签和标签内部填写标签之前的数据分析)应该是可移植的。