[英]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.