3v4l.org

run code in 300+ PHP versions simultaneously
<?php $string = ' <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut <span class=" red email_p_14">labore@et.de</span> dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea consequat. Duis aute irure in reprehenderit in voluptate velit <span class="email_p_22">esse@cillum.de</span> dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit <span class="blue email_ green">anim@id.de</span> laborum. Donec elementum ligula. Quis nostrud exercitation ullamco <span class="blue email_ green black">laboris@nisi.de</span> aliquip ex ea consequat. </p>'; $dom = new DOMDocument; libxml_use_internal_errors(true); $dom->loadHTML($string); $xpath = new DOMXPath($dom); $result = []; foreach ($xpath->query("//span[starts-with(@class, 'email_') or contains(@class, ' email_')]") as $span) { $result[] = [ 'mail' => $span->nodeValue, 'class' => preg_replace( '~.*\b(email_\S*).*~', '$1', $span->getAttribute('class') ) ]; } var_export($result);

preferences:
20.58 ms | 406 KiB | 5 Q