PHP - XML到CSV删除XML空白

时间:2012-02-22 08:55:34

标签: php xml csv

我正在尝试使用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>

正如您所看到的,Price标签内部有很多空格,这与我的CSV格式混淆。我试过这个,但它不起作用:

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

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

4 个答案:

答案 0 :(得分:2)

试试trim()。来自php manual

  

此函数返回一个字符串,其中删除了空格   str的开头和结尾如果没有第二个参数,trim()将会   剥去这些字符:

     

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

答案 1 :(得分:0)

你的正则表达式正在寻找<,但它应该寻找一个数字。尝试

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

认为你已经过度复杂了......

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