You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP处理eBay API返回的SimpleXMLElement:数值格式化与属性获取

解决eBay API findCompletedItems接口的XML处理问题

我来帮你搞定这几个和SimpleXMLElement对象打交道的常见坑:

1. 把价格格式化为两位小数

你遇到number_format无输出的核心原因是:$price不是普通的字符串或数值,而是SimpleXMLElement对象。直接给number_format传对象肯定无法正常工作,得先把它转换成数值类型:

// 先将SimpleXMLElement转为浮点型,再执行格式化
echo number_format((float)$price, 2); // 输出:8.00

// 或者先转成字符串再转数值,效果完全一致
echo number_format((float)(string)$price, 2);

这是正规的处理方式,完全不需要用正则。

2. 获取'USD'货币属性值

要获取XML元素的属性,SimpleXMLElement提供了两种直观的方式:

  • 直接用数组下标访问属性名:
$currency = (string)$price['currencyId'];
echo $currency; // 输出:USD
  • 调用attributes()方法获取属性集合,再取对应属性:
$attributes = $price->attributes();
$currency = (string)$attributes->currencyId;
echo $currency; // 输出:USD

这里一定要加(string)强制转换,不然得到的还是一个SimpleXMLElement对象,直接输出可能不符合预期。

3. 为什么XML响应中看不到USD?

其实它就在XML里,只是你可能没注意到——USD是<price>元素的属性,不是元素的文本内容。原XML的结构大概是这样的:

<price currencyId="USD">8.0</price>

你看到的8.0是元素的文本值,而currencyId="USD"是元素的属性,需要查看元素的属性部分才能看到它。

内容的提问来源于stack exchange,提问作者yello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:05:31