使用PHP添加到xml中

时间:2014-10-14 03:31:44

标签: php xml xml-parsing

我想在我的xml中添加三倍间距,但浏览器正在将三倍间距更改为单一。我发现 用于包含间距。我有一个制表符分隔的文本文件,我正在使用PHP将其转换为xml。为了在我的标题节点中有三重间距我就是这样做的。

 $xml->startElement('Products');
    while ($line = fgetcsv($fp, 0, "\t")) {

        $xml->startElement('Product');
        //replacing titlesingle space to triple space
        $title = str_replace(" ", "   ", $line[1]);
        $xml->writeElement('title', $title);
        .....
        $xml->endElement();
    }
    $xml->endElement();
}

 更改为 ,标题是这样的

<title>A&amp;#160;&amp;#160;&amp;#160;Test</title>

基本上php正在改变&amp;放大器,但我想要精确,以便我可以在标题中有三倍间距

<title>A   Test</title>

任何帮助??

1 个答案:

答案 0 :(得分:1)

它不会改变间距。但是在HTML / XML中,几个空格通常(并不总是)呈现为单个空格或换行符。

#160;是非破坏性的空间。其中一个用途是分离电话号码的各个部分。您不希望电话号码中的某个空格呈现为换行符。

此字符的UTF-8字节为\xC2\xA0

$xml->writeElement('foo', "foo\xC2\xA0&\xC2\xA0bar");

如果XML文档的编码是ASCII,则它们将被编码为实体。

$xml = new XMLWriter();
$xml->openMemory();
$xml->startDocument('1.0', 'ASCII');

$xml->writeElement('foo', "foo\xC2\xA0&\xC2\xA0bar");

$xml->endDocument();
echo $xml->outputMemory(TRUE);

输出:

<?xml version="1.0" encoding="ASCII"?>
<foo>foo&#160;&amp;&#160;bar</foo>