domdocument正则表达式替换标签

时间:2015-09-12 16:11:51

标签: php regex preg-replace 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标签中的class和id加上对齐=&#34; center&#34;对它:
例子:
<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代码来解决这个问题。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

以下是一些可以让您前进的片段:

$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 demo