繁体   English   中英

RegEx(php)-在多行替换中合并行

[英]RegEx (php) - unite lines in multiline replacement

我需要更改从行首起有两个空格的所有文本的背景。

  text

shold将被转换为“ <div class='special'>text</div>

很简单:

$text = preg_replace("|^  (.+)|um", "<div class='special'>$1</div>", $text);

  line1
  line2

转换为

<div class='special'>line1</div>
<div class='special'>line2</div>

虽然

<div class='special'>line1
line2</div>

是必需的。

如何实现?

您将要使用“ s”(点)模式修改器,以便捕获多行。 然后通过匹配“换行符后跟两个空格以外的内容”来停止贪婪

<?PHP
$text = "
  Line One
  Line Two
  Line Three
something";

$text = preg_replace("|^  (.+)^[^(  )]|ums", "<div class='special'>$1</div>\n", $text);


echo $text;

输出:

<div class='special'>Line One
  Line Two
  Line Three
</div>

更换

((?:^  [^\r\n]*(?:\R(?=  ))?)+)

使用<div class='special'>$1</div>

但这会转换

  line1
  line2

对此:

<div class='special'>  line1
  line2</div>

如果要删除空格,则应匹配文本,删除空格,然后替换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM