Никак не удаётся добиться получить регулярку. На regex101.com она работает, а на сайте - нет... В блоке типа HTML: <div> text text text <tag>text</tag> <ul class="fff"> <li>text</li> </ul> text text text </div> Нужно заменить <div> на <div class="class">, но только если между этими <div> и </div> где-то есть какой-то блок с class="fff" Если тега с таким классом нет, то ничего не делать. Заранее благодарю за помощь.
PHP: $html = ' <div> <ul class="xxx"> <li>text</li> </ul> </div> <div> <ul class="fff"> <li>text</li> </ul> </div> '; $doc = new DOMDocument; $doc->loadHTML($html); $xpath = new DOMXpath($doc); foreach ($xpath->query('//div[not(@class) and .//*[@class="fff"]]') as $node) { $node->setAttribute('class', 'class'); } echo $doc->saveHTML();