正则表达式使用php全局替换带有h2标签的h1标签

时间:2017-12-08 13:17:14

标签: php regex preg-replace regex-group

我很难在一段内容中尝试用<h1>替换<h2>代码。

我最接近的是:

preg_replace('/<h1[\s*](class|id|style)="(.*?)">(\w*?)<\/h1>/mi', '<h2 $1="$2">$3</h2>',  $content);

这里的问题是常规的h1行:

<h1>This is the heading</h1>

没有得到捕获。

这一行:

<h1 style="font-size:13px">Another heading</h1>

也不会被捕获,这会让我感到困惑,因为它使用与类和ID相同的设置,仅使用特殊字符,例如-:等。我以为.*?会覆盖。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

以下是类似的内容,包含所有属性:(除了&gt;属性中的所有内容)

$str= <<<EOT
<h1>This is the heading</h1>
<h1 style="font-size:13px">Another heading</h1>
EOT;

$str = preg_replace('#<h1([^>]*)>(.*)</h1>#m','<h2$1>$2</h2>', $str);
print $str;