- preg_replace_callback: documentation ( source)
- htmlspecialchars: documentation ( source)
<?php
$str = '<a href="hello">world</a><div>wow <div>such depth</div> with another <a href="foo">link</a></div> <h1>and other html stuff</h1>';
$id = 1;
print htmlspecialchars($str);
print "<hr>";
$new_str = preg_replace_callback("/(<a|<div)/", function($match) use (&$id) {
switch ($match[1]) {
case '<div':
$result = '<div id="b_'.$id.'"';
break;
case '<a':
$result = '<!-- UNIT'.$id.' --><a id="a_'.$id.'"';
break;
default:
$result = "";
break;
}
$id++;
return $result;
}, $str);
print htmlspecialchars($new_str);