PHP XML - 返回错误值

问题描述 投票:0回答:1

目前我正在开展一个电子商务项目。我有足够的XML产品需要在电子商店上实现。

问题是我的XML解析器返回错误的值,例如:我有浮动32 000,00,它只解析我的php变量32。我正在解析的数字以某种方式除以千,我不知道为什么。与XML文件完全相同的代码有32 000个工作正常。它们是在初始化SimpleXML对象时需要设置的任何转换设置吗?

感谢帮助。

php xml parsing xml-parsing
1个回答
0
投票

让我们看看这个

我有浮动32 000,00,它解析

不,你有一串"32 000, 00"。因此,如果我们看看PHP如何键入杂耍

http://php.net/manual/en/language.types.type-juggling.php

我们看到一些这样的例子:

$foo = 5 * "10 Little Piggies"; // $foo is integer (50)

所以这两个乘以的值是505*10,这十个是从"10 Little Piggies"解析的。 PHP将对上面的内容应用相同的规则,从而产生32。因为它是一个字符串与那些spaces PHP将完成几乎完全相同的方式。

你可以轻松测试这个:

echo floatval('32 000, 00');

产量

32 

Sandbox

您可能必须手动将其转换为应该的内容。一件容易的事就是删除空格:

  echo floatval(str_replace([' ',','], ['','.'], '32 000, 00'));
  #output 32000
  echo floatval(str_replace([' ',','], ['','.'], '32 290,01'));
  #output 32290.01

如果我没记错的话,一些国家使用,作为.进行十进制分离。但我不得不用,替换.让它们工作......可能有一些边缘情况,这将无法工作,但没有更大的数据样本,我不能肯定地说。

那些空间在哪里或为什么在那里,我不知道。最好从XML中完全删除它们,但这可能是不可能的。

如果问题中没有一些实际的代码,那就是我能做的最好的。

干杯!

© www.soinside.com 2019 - 2024. All rights reserved.