У меня есть фрагмент XML, возвращенный DOMDocument :: saveXML ()
. Он уже с большим отступом, с двумя пробелами на уровень, например:
eee
sd
Поскольку невозможно настроить DOMDocument
(AFAIK) относительно символа (ов) отступа, я подумал, что можно запустить регулярное выражение и измените отступ, заменив все пары пробелов табуляцией. Это можно сделать с помощью функции обратного вызова ( Демо ):
$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);
Теперь мне интересно, можно ли сделать это без функции обратного вызова (и без модификатора e
(ОЦЕНКА)). Есть ли у мастеров регулярных выражений идея?