fwrite()没有indention / whitespaces

时间:2016-03-29 16:00:57

标签: php xml fwrite

我在这里有这个简单的设置:

<?php
fwrite($handle, '<?xml version="1.0" encoding="UTF-8"?>
                 <rss version ="2.0"     xmlns:g="http://base.google.com/ns/1.0">
                 <channel>
                 <title>' . $sTitel . '</title>
                 <description>' . $sDescription . '<description>');

如您所见,第二行中有几个空格要写。显然,fwrite会解释它们并将它们写入文件中。这是我不想拥有的。

我的文件输出如下所示:

<?xml version="1.0" encoding="UTF-8"?>
                    <rss version ="2.0" xmlns:g="http://base.google.com/ns/1.0">
                    <channel>
                    <title>myTitle</title>
                    <description>myDesct<description>

trim不会删除空格。为了便于阅读和缩进,我保留了这种格式。当然,一种解决方案就是这样写:

<?php
class myClass {
    public function writeStuff() {
        fwrite($handle, "here
comes
my
content");
    }
}

但是你看,这不是很易读。有任何想法吗?另外,我想保留常用xml结构的标签(或空白)(我猜我可以使用\t吗?

我的预期结果应该是这个(xml文件):

<?xml version="1.0" encoding="UTF-8"?>
<rss version ="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
     <title></title>
     <description><description>
     <link>http://dfu.dev12-1.tro.net/oxid49/<link>
     <item>
         <g:id>531a8af7d9a9a5bb53b65a2b9a5356e5</g:id>
     </item>
</channel>

1 个答案:

答案 0 :(得分:1)

连接每一行。您已经定义了一个包含大量空格(或制表符)的文字字符串。必要时添加空格。

fwrite($handle, '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL
       .'<rss version ="2.0" xmlns:g="http://base.google.com/ns/1.0">'.PHP_EOL
       .'<channel>'.PHP_EOL
       .'    <title>' . $sTitel . '</title>'.PHP_EOL
       .'    <description>' . $sDescription . '<description>'.PHP_EOL);

更具可读性,您仍然可以控制输出。