<?php
$html = "<html><body>\n <!-- This is a comment for search //-->\n <span class=\" search\" >New search performed</span></body></html>" ;
$key = "search" ;
$dom = new DOMDocument( ) ;
$dom -> loadHTML ( $html ) ;
$xpath = new DOMXPath( $dom ) ;
$tt = $xpath -> query ( '//text()' ) ;
foreach ( $xpath -> query ( '//text()' ) as $textNode ) {
$fragment = $dom -> createDocumentFragment ( ) ;
$text = $textNode -> nodeValue ;
while ( ( $pos = stripos ( $text , $key ) ) !== false ) { $fragment -> appendChild ( new DOMText
( substr ( $text , 0 , $pos ) ) ) ;
$lnk = $dom -> createElement ( 'a' ) ;
$lnk -> appendChild ( new DOMText( $word ) ) ;
$lnk -> setAttribute ( 'href' , '#' ) ;
$fragment -> appendChild ( $lnk ) ;
}
$fragment -> appendChild ( new DOMText( $text ) ) ;
$textNode -> parentNode -> replaceChild ( $fragment , $textNode ) ;
}
echo $dom -> saveHTML ( ) ;
PD9waHAKJGh0bWwgPSAiPGh0bWw+PGJvZHk+XG48IS0tIFRoaXMgaXMgYSBjb21tZW50IGZvciBzZWFyY2ggLy8tLT5cbjxzcGFuIGNsYXNzPVwic2VhcmNoXCI+TmV3IHNlYXJjaCBwZXJmb3JtZWQ8L3NwYW4+PC9ib2R5PjwvaHRtbD4iOwoka2V5ID0gInNlYXJjaCI7CiRkb20gICA9IG5ldyBET01Eb2N1bWVudCgpOwokZG9tLT5sb2FkSFRNTCgkaHRtbCk7CiR4cGF0aCA9IG5ldyBET01YUGF0aCgkZG9tKTsKJHR0ID0gJHhwYXRoLT5xdWVyeSgnLy90ZXh0KCknKTsKCmZvcmVhY2ggKCR4cGF0aC0+cXVlcnkoJy8vdGV4dCgpJykgYXMgJHRleHROb2RlKSB7CgkkZnJhZ21lbnQgPSAkZG9tLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAkdGV4dCA9ICR0ZXh0Tm9kZS0+bm9kZVZhbHVlOwoKICAgIHdoaWxlICgoJHBvcyA9IHN0cmlwb3MoJHRleHQsICRrZXkpKSAhPT0gZmFsc2UpIHsKICAgICAgJGZyYWdtZW50LT5hcHBlbmRDaGlsZChuZXcgRE9NVGV4dChzdWJzdHIoJHRleHQsIDAsICRwb3MpKSk7CiAgICAgICR3b3JkID0gc3Vic3RyKCR0ZXh0LCAkcG9zLCBzdHJsZW4oJGtleSkpOwoKICAgICAgJGxuayA9ICRkb20tPmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgJGxuay0+YXBwZW5kQ2hpbGQobmV3IERPTVRleHQoJHdvcmQpKTsKICAgICAgJGxuay0+c2V0QXR0cmlidXRlKCdocmVmJywgJyMnKTsKICAgICAgJGZyYWdtZW50LT5hcHBlbmRDaGlsZCgkbG5rKTsKCiAgICAgICR0ZXh0ID0gc3Vic3RyKCR0ZXh0LCAkcG9zICsgc3RybGVuKCRrZXkpKTsKICAgIH0KICAgIGlmICghZW1wdHkoJHRleHQpKQogICAgICAkZnJhZ21lbnQtPmFwcGVuZENoaWxkKG5ldyBET01UZXh0KCR0ZXh0KSk7CiAgICAkdGV4dE5vZGUtPnBhcmVudE5vZGUtPnJlcGxhY2VDaGlsZCgkZnJhZ21lbnQsICR0ZXh0Tm9kZSk7Cn0KZWNobyAkZG9tLT5zYXZlSFRNTCgpOwo=