Регулярное выражение domdocument заменить тег

привет, у меня есть код регулярного выражения php, например:

preg_replace('~<div\s*.*?(?:\s*class\s*=\s*"(.*?)"|id\s*=\s*"(.*?)\s*)?>~i','<div  align="center" class="$1" id="$2">', "html source code");

теперь я хочу заменить все теги в исходном HTML-коде, а затем сохранить только класс и идентификатор из тега div, а также добавить к нему align="center":
примеры:
<div style="border:none;" class="classbutton"> will be replaced to <div align="center" class="classbutton">

<div style="border:none;" class="classbutton" id="idstyle"> will be replaced to <div align="center" class="classbutton" id="idstyle">


Я уже испробовал множество кодов, использующих регулярные выражения php, но, похоже, у меня ничего не работает. так что, если кто-то может мне помочь или дать код domdocument, чтобы решить эту проблему. заранее спасибо.


person the helper    schedule 12.09.2015    source источник
comment
Это ваш настоящий HTML? Если да, то между < и div есть пробел. Также здесь не видно использования domdocument ..   -  person chris85    schedule 12.09.2015
comment
Я использую выборку с помощью file_get_contents с веб-сайта   -  person the helper    schedule 12.09.2015
comment
а затем я заменяю все теги ‹div› веб-сайта   -  person the helper    schedule 12.09.2015
comment
Я использую код регулярного выражения php, как описано выше, но он не работает. Я слышал, что domdocument может решить мои проблемы, поэтому я прошу кого-нибудь дать мне domdocument, заменяющий мой код регулярного выражения php.   -  person the helper    schedule 12.09.2015
comment
Это не сайт, который просто gives code. Мы помогаем с вопросами кодирования. Вы уже пробовали использовать domdocument? domdocument - лучший подход, чем регулярное выражение.   -  person chris85    schedule 12.09.2015
comment
Я не знаю, как начать с domdocument, если только вы можете помочь мне с запуском, я был бы благодарен   -  person the helper    schedule 12.09.2015


Ответы (1)


Вот фрагмент, который должен вас заинтересовать:

$html = '<body><div style="border:none;" class="classbutton" id="idstyle">Some text</div></body>';            // Sample HTML string

$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

$xpath = new DOMXPath($dom);
$divs = $xpath->query('//div[@class="classbutton"]'); // Get all DIV tags with class "classbutton"

foreach($divs as $div) {                  // Loop through all DIVs found
   $div->setAttribute('align', 'center'); // Set align="center"
   $div->removeAttribute('style');        // Remove "style" attribute
}

echo $dom->saveHTML();                    // Save HTML (use $html = $dom->saveHTML();)

См. демонстрацию IDEONE.

person Wiktor Stribiżew    schedule 12.09.2015