目前,我正在从事一个电子商务项目。我有完整的XML产品,需要在电子商店中实现。
问题是我的XML解析器返回错误值,例如:我有float 32 000,00,它仅将32解析为我的php变量。我要解析的数字以某种方式除以千,而我不知道为什么。与具有32 000的XML文件完全相同的代码可以正常工作。它们是在初始化SimpleXML对象时需要设置的任何转换设置吗?
感谢帮助。
答案 0 :(得分:0)
让我们看看
我有32000,00的浮点数并且可以解析
否,您有一个字符串"32 000, 00"
。因此,如果我们看看PHP如何进行杂耍
http://php.net/manual/en/language.types.type-juggling.php
我们看到一些这样的例子:
$foo = 5 * "10 Little Piggies"; // $foo is integer (50)
因此,这2个乘积的值是50
或5*10
,十个是从"10 Little Piggies"
中解析出来的。 PHP将对您具有的规则应用相同的规则,从而产生32
。因为它是那些spaces
PHP的字符串,所以它几乎与上述方法完全一样。
您可以轻松地对此进行测试:
echo floatval('32 000, 00');
输出
32
您可能必须手动将其转换为应有的形式。一件简单的事情就是删除空格:
echo floatval(str_replace([' ',','], ['','.'], '32 000, 00'));
#output 32000
echo floatval(str_replace([' ',','], ['','.'], '32 290,01'));
#output 32290.01
如果我没记错的话,某些国家/地区会使用,
作为小数分隔符的.
。但是我不得不用,
代替.
才能使它们工作。在某些情况下,这可能行不通,但如果没有更大的数据样本,我就不能说当然可以。
这些空间在那里或为什么在那里,我不知道。最好将它们从XML中完全删除,但这可能是不可能的。
在问题中没有一些实际的代码,这是我能做的最好的事情。
干杯!