preg_replace中的regex不会替换多行

时间:2014-08-19 12:31:03

标签: php regex preg-replace

以下preg_replace检查以*开头的行,并在其周围放置html标记。这很有效,唯一的问题是,它只有在提供一条线时才有效,而不是有多条线。

我已尝试向其中添加\sm,但没有任何内容可以让它发挥作用。如何才能实现这一目标?

$str = <<< EOF
*Portfolio
Our work includes...
*Company Profile
Acme was formed in 
EOF;

$str = preg_replace('/^\*([^\*].*)$/', '<h1>$1</h1>', $str);

echo $str;

//Expected output
<h1>Portfolio</h1>
Our work includes...
<h1>Company Profile</h1>
Acme was formed in

//Current output either works if there's only one line.

1 个答案:

答案 0 :(得分:1)

使用m(多行)修饰符执行此操作。

$str = preg_replace('/(?m)^\*([^*].*)$/', '<h1>$1</h1>', $str);

Live Demo