【问题标题】:PHP - XML to CSV conversion issuePHP - XML 到 CSV 转换问题
【发布时间】:2012-02-11 12:58:48
【问题描述】:

我真的需要一些帮助来解决一个问题:我正在使用 PHP 脚本将 XML 转换为 CSV,但是 XML 包含一些 + 符号,我不知道如何从 CSV 中删除它们。

这是 XML 文件结构:

<PRICES>
<PRICE>
<WIC>HDE0AAFGRBOX</WIC>
<STOCK>100+</STOCK>
<MY_PRICE>219.00</MY_PRICE>
</PRICE>
</PRICES>

这是我使用的脚本:

<?
$filexml='stock.xml';
if (file_exists($filexml)) {
$xml = simplexml_load_file($filexml);
$f = fopen('stock.csv', 'w')
foreach($xml->PRICES->PRICE as $price) {
fputcsv($f, get_object_vars($price),',','"');
}
fclose($f);
}
?>

脚本运行良好,CSV 文件也不错,但是因为我是 PHP 新手,所以不知道如何删除“+”号。

任何帮助将不胜感激。

提前致谢!

【问题讨论】:

  • 我假设 &lt;STOCK&gt;100+&lt;/AVAIL&gt;100+
  • fopen 语句后缺少分号。

标签: php xml csv


【解决方案1】:

您可以尝试修剪要删除的字符(“+”字符):

foreach($xml->PRICES->PRICE as $price) {
   $price->STOCK = trim($price->STOCK, "+");
   fputcsv($f, get_object_vars($price),',','"');
}

【讨论】:

  • Trim 只会删除位于字符串开头或结尾的 + 号,但可能会出现这种情况。否则使用$price-&gt;STOCK = str_replace("+","",$price-&gt;STOCK);
【解决方案2】:

尝试使用 str_replace :

$filexml='stock.xml';
if (file_exists($filexml)) {
$xml = simplexml_load_file($filexml);
$f = fopen('stock.csv', 'w')
foreach($xml->PRICES->PRICE as $price) {
$price->STOCK = str_replace("+","",$price->STOCK);
fputcsv($f, get_object_vars($price),',','"');
}
fclose($f);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多