我需要更改从行首开始有两个空格的所有文本的背景。
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>
是必需的。
如何实现?
答案 0 :(得分:1)
您需要使用“s”(DOTALL)模式修改器,以便捕获多行。然后通过匹配“换行符后跟两个空格以外的东西”来停止贪婪
<?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>
答案 1 :(得分:0)
替换
((?:^ [^\r\n]*(?:\R(?= ))?)+)
<div class='special'>$1</div>
。
但这会转换
line1
line2
到此:
<div class='special'> line1
line2</div>
如果要删除空格,则应匹配文本,删除空格然后替换。