我想使用preg_replace执行以下操作:
$text = "
Lorem ipsum dolor sit amet
***consectetuer adipiscing elit
Aenean commodo ligula eget dolor
Aenean massa
"
$regex = "#('\***')(.*?)\n#";
$text = preg_replace($regex1,"<h5>$2</h5>", $text);
而不是输出:
Lorem ipsum dolor sit amet
<h5>consectetuer adipiscing elit</h5>
Aenean commodo ligula eget dolor
Aenean massa
所以用开口H5替换三个*,然后用三个*替换为关闭H5后的第一个换行符。
我尝试了许多正则表达式模式,但没有成功。由于我不熟悉这个,我希望有人可以帮助我吗?
答案 0 :(得分:3)
你的正则表达式是在正确的轨道上。
单引号没有用:
$regex = "#('\***')(.*?)\n#";
↑ ↑
每个文字*
需要转义:
$regex = "#(\*\*\*)(.*?)\n#";
我还会匹配第二个捕获组中的\n
权限,或者使用\R
进行任何换行。或者甚至可能是#m
标志,只有行结束$
锚。