Php 如何隐藏小数点后第二位的尾随零?

Php 如何隐藏小数点后第二位的尾随零?,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,所以我有一个问题,我希望有人能帮我解决…我有一个WoodPress网站,使用WooCommerce,我正在尝试做一些相对具体的事情。该网站为各种产品提供了大量的批量定价折扣。现在,当涉及批量定价时,我需要用四位小数(即0.1234美元)进行计算,因此我设置了WooCommerce设置,以便小数位数为4。问题是,我们的许多产品没有批量定价折扣;在大多数情况下,小数点后四位是完全不必要的。(例如:$0.5500或$12.0000)是否有任何方法可以修剪尾随的零,但前提是它位于小数点后第二位?例如,如


所以我有一个问题,我希望有人能帮我解决…
我有一个WoodPress网站,使用WooCommerce,我正在尝试做一些相对具体的事情。该网站为各种产品提供了大量的批量定价折扣。
现在,当涉及批量定价时,我需要用四位小数(即0.1234美元)进行计算,因此我设置了WooCommerce设置,以便小数位数为4。
问题是,我们的许多产品没有批量定价折扣;在大多数情况下,小数点后四位是完全不必要的。(例如:$0.5500或$12.0000)是否有任何方法可以修剪尾随的零,但前提是它位于小数点后第二位?
例如,如果我有$0.5500,它将显示为$0.55,如果我有$12.0000,它将显示为$12.00

我知道几年前有人问过一个非常类似的问题(),但不幸的是,在这种情况下有效的答案似乎对我不起作用。。。话虽如此,我可能会试图用错误的方式使用它。我不太熟悉在WordPress“functions.php”文件中使用正则表达式。

任何帮助都将不胜感激!谢谢

编辑:
在这一点上,我有一些大致的想法:

add_action('wc_price', 'custom_price_disp');
function custom_price_disp($price) {
    $count = null;
    $resultingPrice = preg_replace('/(?<=\d{2})(0+)$/', '', $price, -1, $count);
    return $resultingPrice;
}
add_action('wc_price','custom_price_disp');
功能自定义价格显示($price){
$count=null;

$resultingPrice=preg_replace('/(?我自己没有用过它,但是基于前面提到的
wc_price()
方法的代码,看起来你可以利用一个过滤器:

if ( apply_filters( 'woocommerce_price_trim_zeros', false ) && $decimals > 0 ) {
  $price = wc_trim_zeros( $price );
}
您应该能够将其添加到
函数中。php

add_filter( 'woocommerce_price_trim_zeros', true );

要触发此行为。

您可以在
函数中使用此函数。php
子主题,它工作正常并从每个价格中删除
.00

add_filter('woocommerce_price_trim_zeros', 'wc_hide_trailing_zeros', 10, 1);
function wc_hide_trailing_zeros( $trim ) {
    // set to false to show trailing zeros
    return true;
}

您需要自定义的函数是:@wittich好的,知道这个肯定很好。但这就引出了另一个问题:自定义WooCommerce函数最有效的方法是什么?过去每次我这样做,结果都有点混乱。有“正确”吗我不知道该怎么做?谢谢,首先我很感激你的回答。我试过简单地使用add_filter('woocommerce_price_trim_zero',true);但这会修剪任何和所有小数点后的零。我试图做的是只修剪小数点后第二位的零。对;这是有意义的。在这种情况下,这有点棘手!您可能需要重构。您还可以,而不是将
true
作为
add_filter()的第二个参数传递
,而是向其传递一个函数,该函数模仿
wc\u trim\u zeros()
,但执行您需要的操作。