相关疑难解决方法(0)

使用preg_replace转换缩进(无回调)

我有一些返回的XML块DOMDocument::saveXML().它已经非常缩进,每个级别有两个空格,如下所示:

<?xml version="1.0"?>
<root>
  <error>
    <a>eee</a>
    <b>sd</b>
  </error>
</root>
Run Code Online (Sandbox Code Playgroud)

由于无法配置DOMDocument(AFAIK)缩进字符,我认为可以运行正则表达式并通过将所有两个空格对替换为制表符来更改缩进.这可以通过回调函数(Demo)来完成:

$xml_string = $doc->saveXML();
function callback($m)
{
    $spaces = strlen($m[0]);
    $tabs = $spaces / 2;
    return str_repeat("\t", $tabs);
}
$xml_string = preg_replace_callback('/^(?:[ ]{2})+/um', 'callback', $xml_string);
Run Code Online (Sandbox Code Playgroud)

我现在想知道是否有可能做这个没有回调函数(并且没有e-modifier(EVAL)).有想法的任何正则表达式向导?

php regex xml domdocument

22
推荐指数
2
解决办法
1760
查看次数

标签 统计

domdocument ×1

php ×1

regex ×1

xml ×1