domdocument regex заместващ етикет

здравейте, имам php regex код като този:

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 regex, но изглежда нищо не работи за мен. така че ако някой може да ми помогне или да ми даде код на 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 regex, както е описано по-горе, но той не работи, чух, че domdocument може да реши проблемите ми, така че моля някой да ми даде domdocument, който да замени моя код на php regex   -  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