【问题标题】:PHP - XML to CSV remove XML WhitespacePHP - XML 到 CSV 删除 XML 空白
【发布时间】:2012-02-22 08:55:33
【问题描述】:

我正在尝试使用 PHP 将 XML 文件转换为 CSV,但标签内的某些值存在空格问题。 这是 XML:

<Product>
<Code>1234</Code>
<Name>product name</Name>
<Category>some category</Category>
<Manufacturer>manufacturer</Manufacturer>
<Price>                 100</Price>
<Stock>1</Stock>
</Product>

如您所见,价格标签内有很多空格,这与我的 CSV 格式相混淆。我试过了,但没有用:

$Product->Price = preg_replace("/>\s+</", "><", $Product->Price);

任何帮助将不胜感激。提前致谢。

【问题讨论】:

  • 正则表达式中要匹配的“/>”是什么?
  • 您是否使用 XML 解析器来解析 XML?

标签: php xml csv


【解决方案1】:

试试trim()。来自php manual

此函数返回一个从 str 的开头和结尾。如果没有第二个参数, trim() 将 去掉这些字符:

" " (ASCII 32 (0x20)),一个普通的空格。 "\t" (ASCII 9 (0x09)), 一个 标签。 "\n" (ASCII 10 (0x0A)),换行(换行)。 "\r" (ASCII 13 (0x0D)),回车。 “\0”(ASCII 0 (0x00)),NUL 字节。 "\x0B" (ASCII 11 (0x0B)),垂直制表符。

【讨论】:

    【解决方案2】:

    您的正则表达式正在寻找&lt;,但它应该寻找一个数字。试试

    $Product->Price = preg_replace("/>\s+[0-9]</", "><", $Product->Price);
    

    您可以在此页面上测试 php preg_* 函数:http://www.fullonrobotchubby.co.uk/random/preg_tester/preg_tester.php

    【讨论】:

      【解决方案3】:

      如果可以,请使用其他人花时间编写的一些解析器:

      【讨论】:

        【解决方案4】:

        认为你已经把它复杂化了......

        $Product->Price = preg_replace("/\s/","",$Product->Price);
        

        【讨论】:

        • 非常正确,trim() 实际上是一个更优雅的解决方案,我的只是遵循他已经存在的代码。
        猜你喜欢
        • 1970-01-01
        • 2023-01-19
        • 1970-01-01
        • 1970-01-01
        • 2017-09-13
        • 1970-01-01
        • 1970-01-01
        • 2013-01-12
        • 1970-01-01
        相关资源
        最近更新 更多