字符串中的php标签

时间:2013-02-28 15:56:40

标签: php xml

我正在尝试在php中创建一个ArrayToXML转换器。

我有这段代码:

function assocArrayToXML($root_element_name,$ar) {

         $xml = new SimpleXMLElement("<?xml version=\"1.0\"?><{$root_element_name}></{$root_element_name}>");

         $f = create_function('$f,$c,$a','
            foreach($a as $k=>$v) {
                       if(is_array($v)) {
                $ch=$c->addChild($k);
                $f($f,$ch,$v);
            } else {
                $c->addChild($k,$v);
            }
        }');
        $f($f,$xml,$ar);
        return $xml->asXML();
}

来自http://php.net/manual/es/book.simplexml.php

我遇到的问题是这一行:

$xml = new SimpleXMLElement("<?xml version=\"1.0\"?><{$root_element_name}></{$root_element_name}>");

因为字符串有“?&gt;”而php“think”是php标签的结尾。

如何在php字符串中写这两个字符?

2 个答案:

答案 0 :(得分:1)

从您的问题不清楚您的问题所在,您可以逐字使用您的代码(Demo):

$xml = new SimpleXMLElement("<?xml version=\"1.0\"?><{$root_element_name}/>");

对于simplexml,这实际上等于以下更短的行(您可能更喜欢):

$xml = new SimpleXMLElement("<{$root_element_name}/>");

SimpleXML自己添加了XML序言,因此您无需编写它。

转义字符,使其变为

$xml = new SimpleXMLElement("<?xml version=\"1.0\"?\><{$root_element_name}/>");

这不是必需的,但保留在这里,因为这是最初的答案。

答案 1 :(得分:0)

只需拆分字符串:

'<' . '?xml ....