php WooCommerce:如何将wp_price值转换为数值?

ivqmmu1c  于 2023-10-15  发布在  PHP
关注(0)|答案(3)|浏览(96)

我正在开发一个有两列的表,“State”和“Sales”。为了获得sales列中的数字,我使用wc_price函数,它可以很好地输出货币字符串:
CA $1,652.13
CO $515.80
等等
我至少有50行,每个州一行。
最后一行将输出第2列中所有美元金额的总和。
我发现wc_price的实际结果不仅仅是一个sting,它是一个html块:

<bdi>
    <span class="woocommerce-Price-currencySymbol">$</span>
    435.50
</bdi>

我尝试使用strip_tagesx 1 m0n1x获取html中的实际数字:

$numeric = strip_tags(wc_price($total)); // result is a simple string, with the $ sign
echo str_replace("$","",$numeric) . "<br>"; // doesn't strip away the $ sign.
$tally = $tally + $numeric; // produces an error, non-numeric value.

错误发生在$tally =行。这根本行不通当然,html标签被剥离了,我只剩下一个字符串:$435.50。换句话说,由于某种原因,我无法摆脱那个带引号的'$'。我只是不能解析、转换或任何东西到那个货币字符串。(int)、intval($numeric)、(float)$numeric、floatval($numeric)等,这些都不起作用。number_format也不起作用。
Warning: A non-numeric value encountered in C:\xampp\htdocs\mysite\wp-content\plugins\my-custom-plugin\my-custom-plugin.php on line 104

inb24sb2

inb24sb21#

str_replace周围添加一个floatval()并分配变量。

$numeric = strip_tags($html);
    $numeric = floatval(str_replace("$", "", $numeric));

请参见working example。它适用于5.6、7.4和8.1。

1bqhqjot

1bqhqjot2#

解决方案:

$regular_price = strip_tags($regular_price);
$sale_price = strip_tags($sale_price);
$regular_price = floatval(str_replace('&#36;', '', $regular_price));
$sale_price = floatval(str_replace("&#36;", "", $sale_price));

所以当我们试图得到一个可变产品的价格时,这个问题就出现了。然而,正如上面的答案所示,$并没有被取代。这是因为标志是在html字符代码格式。那是..$.
还有一个,我已经尝试了preg_replace一个,但也不工作。它取代了
$标志,但36
从 *$ 到位。
你可以运行var_dump($regular_price);你会看到它会把额外的5个字母。如果数字是$80.00字符串必须显示如下字符串(6)$80.00
但是它会显示这个string(10)$80.00,因为字符是80.00
为了这个浪费了一个小时...

o2gm4chl

o2gm4chl3#

我不确定结果,但我认为有可能在没有从wp_price的文档中读取阅读的情况下获得价格:

$numeric = wp_price($total, array('currency'=>''));

但是,您可以执行一些操作来更改wc_price函数的行为。

相关问题