我正在开发一个有两列的表,“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
3条答案
按热度按时间inb24sb21#
在
str_replace
周围添加一个floatval()
并分配变量。请参见working example。它适用于5.6、7.4和8.1。
1bqhqjot2#
解决方案:
所以当我们试图得到一个可变产品的价格时,这个问题就出现了。然而,正如上面的答案所示,$并没有被取代。这是因为标志是在html字符代码格式。那是..$.
还有一个,我已经尝试了preg_replace一个,但也不工作。它取代了$标志,但36从 *$ 到位。
你可以运行var_dump($regular_price);你会看到它会把额外的5个字母。如果数字是$80.00字符串必须显示如下字符串(6)$80.00
但是它会显示这个string(10)$80.00,因为字符是80.00
为了这个浪费了一个小时...
o2gm4chl3#
我不确定结果,但我认为有可能在没有从wp_price的文档中读取阅读的情况下获得价格:
但是,您可以执行一些操作来更改wc_price函数的行为。