Regex заменяет тег h1 тегом h2 глобально с переполнением стека

Я с трудом пытаюсь заменить <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>

Также не будет захвачен, что сбивает меня с толку, так как он использует те же настройки, что и class и id, только со специальными символами, такими как -, : и так далее. я думал .*? покроет

Любая помощь могла бы быть полезна.

-1

Решение

Вот что-то похожее, принимая все атрибуты: (все, кроме> в атрибутах)

$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;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]