【问题标题】:PHP Currency with XML - Incorrect Results带有 XML 的 PHP 货币 - 结果不正确
【发布时间】:2017-03-14 09:08:54
【问题描述】:

早安,

我想知道你是否能以某种方式帮助我?

我有一个“产品价格”和“加价”,我想计算一个“总价格”,但它给我的结果不正确。

示例:“总价”=“产品价格”*“加价”

我有以下代码。

<?php 
$markup      = 1 + (15 / 100);
$url         = "http://nanobug.co.za/feed/stock-file/Stock-File-New.xml";
$xml         = simplexml_load_file($url);
foreach ($xml->product as $item)
{
    $product_code  = $item->code;
    $product_price = $item->price;
    $product_price = str_replace("R", "", $product_price);
    $product_price = str_replace(" ", "", $product_price);
    $total_price   = $product_price * $markup;
    echo "Product Price: ".$product_price."<br>";
    echo "Markup: ".$markup."<br>";
    echo "Equation: Total Price = Product Price * Markup<br>";
    echo "Total Price: ".$total_price."<br><br>";
}
?>

查看结果的链接:View Results

查看xml文件的链接:View XML

你能帮我吗,因为它给出的总价不正确。

【问题讨论】:

  • 这可能是因为您将$product_price 的值更改为字符串。
  • @ÁlvaroGonzález 我认为 OP 已经在线修复了脚本,所以现在编辑的问题实际上包含正确的结果......
  • @ewcz 该死的...
  • @Andre 您能否编辑问题并分享显示问题的实际代码?这就是为什么网站指南要求问题是独立的。你的不到一个小时就坏了:)
  • @ÁlvaroGonzález 同样,复制粘贴的 XML 似乎不包含导致问题的不间断空格(看起来它被替换为普通空格)

标签: php html xml math


【解决方案1】:

我建议use

$product_price = preg_replace('~[ \x{00a0}]~siu', '', $product_price);

而不是

$product_price = str_replace(" ", "", $product_price);

原因是你的xml文件看起来像:

grep price *.xml | head -n1 | hexdump -C

00000000  20 20 20 20 3c 70 72 69  63 65 3e 52 20 32 38 c2  |    <price>R 28.|
00000010  a0 39 39 39 2e 30 30 3c  2f 70 72 69 63 65 3e 0d  |.999.00</price>.|
00000020  0a                                                |.|
00000021

即,作为千位分隔符的空格不是普通空格,而是non-breaking space(UTF-8 中的C2 A0,如上所示),因此str_replace(" ", "", $product_price) 语句对其没有影响,因此您实际上只考虑了数千个(即在这种情况下"28 999"*1.15 产生28*1.15)...

【讨论】:

  • 您好,感谢您的快速回复。我已经改变了它,它仍然给我同样的结果
  • @AndreHoffmann 是吗?我刚刚尝试执行脚本,它似乎可以工作...您可以尝试更新的正则表达式吗?
  • 非常感谢。我知道它与第二个一起工作。你的男人。希望你有一个美好的一天。坦克一百万
猜你喜欢
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 2011-10-07
  • 1970-01-01
  • 2012-01-22
相关资源
最近更新 更多