fork(1) download
  1. <?php
  2.  
  3. $html = <<<DATA
  4. <body>
  5. <div class="sm2-inline-duration timestamp">0:00</div>
  6. <div class="sm2-inline-time timestamp">0:00</div>
  7. <div class="sm2-inline-duration">0:00</div>
  8. <div class="sm2-inline-duration">Do not touch this</div>
  9. </body>
  10. DATA;
  11.  
  12. $dom = new DOMDocument('1.0', 'UTF-8');
  13. $dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
  14.  
  15. $pattern = '/(?<!:)\d{1,2}:\d{2}(?::\d{2})?(?!(?::\d{2})?\s*[ap]\.?m\.?)/i';
  16. $replacement = '[spp-timestamp time="$0"]';
  17.  
  18. $xpath = new DOMXPath($dom);
  19. $divs = $xpath->query('//div[not(contains(@class, "timestamp"))]');
  20.  
  21. foreach($divs as $div) {
  22. $div->nodeValue = preg_replace ($pattern,$replacement, $div->nodeValue);
  23. }
  24.  
  25. echo $dom->saveHTML();
Success #stdin #stdout 0.02s 52480KB
stdin
Standard input is empty
stdout
<body>
<div class="sm2-inline-duration timestamp">0:00</div>
<div class="sm2-inline-time timestamp">0:00</div>
<div class="sm2-inline-duration">[spp-timestamp time="0:00"]</div>
<div class="sm2-inline-duration">Do not touch this</div>
</body>