Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用属性缩进保存HTML?_Php_Simplexml_Domdocument - Fatal编程技术网

Php 如何使用属性缩进保存HTML?

Php 如何使用属性缩进保存HTML?,php,simplexml,domdocument,Php,Simplexml,Domdocument,我用$dom->saveHTML得到了这个结果: <!DOCTYPE html> <html> <head> <title>Complete!</title> </head> <body> <div id="foo" class="bar baz" data-foo="a" data-bar="b" data-baz="c"></div&g

我用$dom->saveHTML得到了这个结果:

<!DOCTYPE html>
<html>
    <head>
        <title>Complete!</title>
    </head>
    <body>
        <div id="foo" class="bar baz" data-foo="a" data-bar="b" data-baz="c"></div>
    </body>
</html>
但我希望使用属性缩进保存结果:

<!DOCTYPE html>
<html>
    <head>
        <title>Complete!</title>
    </head>
    <body>
        <div id="foo"
                class="bar baz"
                data-foo="a"
                data-bar="b"
                data-baz="c"></div>
    </body>
</html>
如何使用本机php DOMDocument/DOMNode/domeElement/somethingelse


UPD:是的!我真的需要那种特定的格式,以便人们阅读。

他自己回答道。也许这将是一个很好的解决方案:

$html = $dom->saveHTML();
$html = html_entity_decode($html, ENT_QUOTES, 'UTF-8');
$html = explode("\n", $html);
foreach ($html as $num => $line) {
    if (preg_match('/^(\s*<[a-z]+\s+)([^>]+)(>)(.*)$/s', $line, $m)) {
        $offset = ceil(mb_strlen($m[1]) / 4);
        $attrs  = preg_split('/"\s+/', $m[2]);
        $attrs  = join("\"\n" . str_repeat('    ', $offset), $attrs);
        $html[$num] = $m[1] . $attrs . $m[3] . $m[4];
    }
}
$html = join("\n", $html);

我认为你做不到。此外:为什么你真的需要那个特定的格式?@EliasVanOotegem,是的,真的需要。libxml2c语言很可能具有这一特性。但是这里需要php实现。@EliasVanOotegem例如Ctrl+U:更改格式,即在一行中写入entirey标记,在d属性中用一个空格替换所有新行:一点都不重要:SVG看起来仍然相同,标记仍然同样有效。到目前为止,我在libxml2中发现的唯一与格式化相关的函数是BTW,通过github上的php源代码快速浏览,我发现它们没有以这样的方式绑定,您可以使用它们格式化单个文件的输出tag@EliasVanOotegem,不,我的问题仅针对属性,仅针对我的示例。