Intereting Posts
Удалить повторяющиеся косые черты Несколько таблиц с одним отношением (Laravel) JQUERY, чтобы автоматически заполнить выбранный вход от другого входа выбора Массив заполняет отсутствующий индекс Новая recaptcha не работает дважды (в основном) на той же странице Серверная сторона PHP Длительный опрос форматирование массива с использованием php Не удается получить доступ к данным из запроса jQuery Ajax, возвращает пустой массив Скрипт аутентификации PHP php не соответствует ios lon и lat с mysql lon и lat правильно SQLSTATE : Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется отправлять данные в MySQL с помощью AJAX + jQuery + PHP Изменение общего количества и tax_total Woocommerce Как удалить элемент из дерева XML, где атрибут – это определенная строка в Simple XML PHP Является ли PHP эквивалентным для Java «синхронизированным», или это не требуется?

Замените теги UL определенным классом

Я пытаюсь заменить все теги ul на класс level0, что-то вроде этого:

<ul> <li>Test <ul class="level0"> ... </ul> </li> </ul> 

будут обработаны до

 <ul> <li>Test</li> </ul> 

Я пытался

 $_menu = preg_replace('/<ul class="level0">(.*)<\/ul>/iU', "", $_menu); 

но это не работает, помогите?

Благодарю.

Yehia

Я уверен, что это дубликат, но в любом случае, вот как это сделать с DOM

 $dom = new DOMDocument; // init new DOMDocument $dom->loadHTML($html); // load HTML into it $xpath = new DOMXPath($dom); // create a new XPath $nodes = $xpath->query('//ul[@class="level0"]'); // Find all UL with class foreach($nodes as $node) { // Iterate over found elements $node->parentNode->removeChild($node); // Remove UL Element } echo $dom->saveHTML(); // output cleaned HTML 

try / mis вместо / iU

Ваш код работает отлично, за исключением того, что вы передаете $ _menu как строку, содержащую символы, отличные от тех, с которыми вы делаете preg_replace, несмотря на то, что визуально это выглядит нормально. Строка также содержит вкладки, разрывы и пробелы, которые RegEx не ищет. Вы можете решить эту проблему, используя:

(например)

 $_menu='<ul> <li>Test <ul class="level0"> ... </ul> </li> </ul> '; $breaks = array(" ", "\n", "\r", "chr(13)", "\t", "\0", "\x0B"); $_menu=str_replace($breaks,"",$_menu); $_menu = preg_replace('/<ul class="level0">(.*)<\/ul>/iU', "", $_menu); 

пытаться

 $str ='<ul> <li>Test <ul class="level0"> tsts </ul> </li> </ul> '; //echo '<pre>'; $str = preg_replace(array("/(\s\/\/.*\\n)/","/(\\t|\\r|\\n)/",'/<!--(.*)-->/Uis','/>\\s+</'),array("","","",'><'),$str); echo preg_replace('/<ul class="level0">(.*)<\/li>/',"</li>",trim($str));