I have a for loop which i want to add ID to my <h2> and <h3> using preg_replace, my problem is I cant get the tag which has a class (like this <h2 >test</h2>).
PS: the text between tags is important and I pass it with the $r[$i] variable.
for ($i = 0; $i < count($r); $i ) {
$replace_quary = "<h2 id='t" . $i . "'>" . $r[$i] . "</h2>";
$content = preg_replace('#<h2.*?>('. $r[$i] .')</h2>#i', $replace_quary, $content);
echo $content;
}
CodePudding user response:
Use a capture group to copy the part of the tag that matches .*?.
Also use preg_quote() to escape any special characters in $r[$i].
for ($i = 0; $i < count($r); $i ) {
$text = preg_quote($r[$i]);
$replace_quary = "<h2 id='t$i' $1>$2</h2>";
$content = preg_replace('#<h2(.*?)>('. $text .')</h2>#i', $replace_quary, $content);
echo $content;
}
