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

Php 替换不在标记内的所有换行符实例,php,regex,preg-replace,Php,Regex,Preg Replace,我有一个包含换行符的文本体,我想用s替换不在某些标记内的所有换行符实例。标签是[某物][~某物],其中某物可以是任何东西 很抱歉没有包括我已经尝试过的内容,但我不知道如何让正则表达式与其他内容之外的内容匹配。这可能吗?请记住,您不应该使用正则表达式解析XML/HTML,这是一个例子: #!/usr/bin/perl # $in = "foo\nbar\nbaz[something]else\nis\n[~something]\nHappening\n[something]else\nis\n[

我有一个包含换行符的文本体,我想用s替换不在某些标记内的所有换行符实例。标签是[某物][~某物],其中某物可以是任何东西


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

请记住,您不应该使用正则表达式解析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;

是的,不是用您选择的语言,而是在标记之前分阶段解析数据以及在删除处理后的数据时在标记内部解析数据的概念应该是可移植的。

在这里为phpac发布perl完全没有用。实际上,perl是我选择的语言,但我不得不使用PHP。谢谢,它很有魅力,我希望我能把它移植到PHP和其他任何东西上。在这里发布perl并不是毫无用处的。用户问了一个基于正则表达式的问题,preg_match正在实现与Perl兼容的正则表达式。PCRE PHP与Perl有很多相似之处。如果您发布一个要替换的html示例,这会有所帮助。