php строковая функция concat - PullRequest
       8

php строковая функция concat

0 голосов
/ 19 февраля 2010
$contents  = "<?xml version='1.0' ?>
        <authed>1</authed>
            <book>read</book>";

у меня такая строка xml я хочу добавить все элементы внутри корневого тега

как это

$contents  = "<?xml version='1.0' ?>
        <root>
        <authed>1</authed>
            <book>read</book>
        </root>";

Ответы [ 4 ]

1 голос
/ 19 февраля 2010

Строковые операции в XML аналогичны операциям регулярного выражения в HTML. Этот ответ ставит его в перспективе.

0 голосов
/ 19 февраля 2010

Это недопустимый XML. Документ XML имеет ровно один единственный корневой элемент. Независимо от того, что сгенерировано, что not-XML суп тега должен быть исправлен , чтобы он выводил некоторый допустимый XML.

В противном случае, если вы спрашиваете о проблеме, вы можете использовать любой вид замены строки.

$contents = preg_replace('#^<\\?.*?\\?>#', '$0<root>', $contents) . '</root>';
0 голосов
/ 19 февраля 2010

Если вы хотите сделать только добавление корневого элемента, вы можете сделать

$contents = str_replace("<?xml version='1.0' ?>", 
                        "<?xml version='1.0' ?><root>", 
                        $contents . '</root>');

Это заменит пролог с самим собой плюс корневой элемент внутри содержимого и добавленный закрывающий корневой тег. Однако имейте в виду, что технически мы просто вставляем сюда случайные строки, а не узлы, что означает, что <root> обрабатывается так же, как oot><aut. Угловые скобки не имеют особого значения при работе со струнами. Мы сами определили семантику. Это нормально для простого варианта использования, как указано выше.

Но если вы хотите работать с узлами, рассмотрите возможность использования одной из XML-библиотек PHP .

0 голосов
/ 19 февраля 2010

Вы можете использовать substr для извлечения первой части (версия xml) и второй части (элементы), а затем рекомбинировать

...