2017-12-08 3 views
-1

Ich habe eine harte Zeit zu versuchen, <h1> Tags mit <h2> in einem Stück Inhalt zu ersetzen.Regex ersetzen h1-Tag mit h2-Tag global mit PHP

Die nächstgelegene wir bekommen haben, ist dies:

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

Das hier Problem ist, dass eine regelmäßige h1 Linie als:

<h1>This is the heading</h1>

nicht capturet bekommen.

Diese Zeile:

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

wird auch nicht gefangen genommen, die mir Schikanen, da es die gleiche Einstellung wie Klassen- und id verwendet, nur mit Sonderzeichen, wie -, : und so weiter . Ich dachte, .*? würde abdecken.

Jede Hilfe würde wirklich geschätzt werden. Hier

Antwort

0

ist etwas ähnlich, wobei alle Attribute: (alles, was aber> in Attribute)

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