如何在没有货币符号的情况下获得价格?

时间:2016-05-22 11:03:37

标签: php opencart opencart2.x

我想在产品页面中为 OpenCart 获取没有货币符号的价格值。我使用以下代码。但是,它并不完美。

我找到并使用了以下代码。在 .tpl 文件中。

<?php
 $pricenocurrency = $price;
 $pricenocurrency  = preg_replace( '/\D/', '', $pricenocurrency  );
 echo $pricenocurrency ;
?>

所以,我得到以下结果。但是,我不想从价格中删除点(。)。

默认价格 = 86.02€

我有 = 8602

我想 = 86.02

3 个答案:

答案 0 :(得分:2)

将点添加到preg_replace条件

 $pricenocurrency  = preg_replace( '/[^.\d]/', '', $pricenocurrency  );

如果价格周围的文字可能包含数字,那么只保存数字后的点数会有点复杂

(?<!\d)\.|[^\d]

答案 1 :(得分:1)

上述解决方案运行正常,但如果您的商店有多种货币,我会建议使用默认的opencart功能。就这样做,

在您的控制器中执行以下操作。

$data['price_without_symbol'] = $this->currency->format($amount,$currency_code,$currency_value,false);

将导致没有货币符号的价格。并在.tpl文件中使用它。如果您的商店支持多种货币,建议您使为知识而休息。 :)

答案 2 :(得分:0)

您也可以使用此

// Manually-created *valid* JSON
func JsonTest1(w http.ResponseWriter, r *http.Request) {
    test1 := "something1"
    test2 := 456
    // %q instead of %s gives us a quoted string:
    j1 := []byte(fmt.Sprintf(`
    {
      data: {
        "test1": %q,
        "test2": %d
      }
    }
  `, test1, test2))

    w.Header().Set("Content-Type", "application/json")
    w.Write(j1)
}

// JSON created with json.Marshal
func JsonTest2(w http.ResponseWriter, r *http.Request) {
    test1 := "something1"
    test2 := 456
    data := map[string]interface{}{
        "data": map[string]interface{}{
            "test1": test1,
            "test2": test2,
        },
    }
    j1, _ := json.Marshal(data)
    w.Header().Set("Content-Type", "application/json")
    w.Write(j1)
}