fork(1) download
  1. <?php
  2. $html = "<html><body>\n<!-- This is a comment for search //-->\n<span class=\"search\">New search performed</span></body></html>";
  3. $key = "search";
  4. $dom = new DOMDocument();
  5. $dom->loadHTML($html);
  6. $xpath = new DOMXPath($dom);
  7. $tt = $xpath->query('//text()');
  8.  
  9. foreach ($xpath->query('//text()') as $textNode) {
  10. $fragment = $dom->createDocumentFragment();
  11. $text = $textNode->nodeValue;
  12.  
  13. while (($pos = stripos($text, $key)) !== false) {
  14. $fragment->appendChild(new DOMText(substr($text, 0, $pos)));
  15. $word = substr($text, $pos, strlen($key));
  16.  
  17. $lnk = $dom->createElement('a');
  18. $lnk->appendChild(new DOMText($word));
  19. $lnk->setAttribute('href', '#');
  20. $fragment->appendChild($lnk);
  21.  
  22. $text = substr($text, $pos + strlen($key));
  23. }
  24. if (!empty($text))
  25. $fragment->appendChild(new DOMText($text));
  26. $textNode->parentNode->replaceChild($fragment, $textNode);
  27. }
  28. echo $dom->saveHTML();
  29.  
Success #stdin #stdout 0.01s 24448KB
stdin
Standard input is empty
stdout
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://w...content-available-to-author-only...3.org/TR/REC-html40/loose.dtd">
<html><body>
<!-- This is a comment for search //-->
<span class="search">New <a href="#">search</a> performed</span></body></html>