尝试去除Woocommerce中的标签和过滤器值,但无法管理o以正确的格式获取它。有些东西是可疑的..PHP preg_filter返回意外的长值
正在使用WC()->cart->get_cart_subtotal();
来检索该值。在这个例子中我的价值是2,429kr和原始返回的值是<span class="amount">2,429kr</span>
$cart_total = WC()->cart->get_cart_subtotal();
$cart_total_format = strip_tags($cart_total);
$cart_value = preg_filter("/[^0-9,.]/", "", $cart_total_format);
echo $cart_value;
结果 = 2,429107114
预计 = 2,429
我不是一个PHP的向导,所以我想我是做错了一些事情,并且没有得到正确的结果就尝试了几种不同的方法和方法。
然后我做了尝试从WC()->cart->get_cart_subtotal();
生出来的输出为$字符串
$string_total = '<span class="amount">2,429kr</span>';
$string_total_format = strip_tags($string_total);
$string_value = preg_filter("/[^0-9,.]/", "", $string_total_format);
echo $string_value;
结果 = 2,429
预计 = 2,429
为什么? :(
更新
看到这个Woocommerce @Github周围挖掘时
case 'SEK' : $currency_symbol = 'kr'; break;
所以,真正的价值是:
<span class="amount">2,429kr</span>
现在的问题是什么,最好的办法过滤掉?我的快速修复方法是这样的,它并不漂亮,但解决了问题。
$cart_total = WC()->cart->get_cart_subtotal();
$cart_total_format = strip_tags($cart_total);
$cart_value = preg_filter("/[^0-9,.]/","", $cart_total_format);
$cart_value_new = preg_filter("/107114/",".", $cart_value);
echo $cart_value_new;
结果 = 2,429
预计 = 2,429
首先,你的正则表达式是不同的。第一个不包括千位和小数分隔符,但我想你确实将它们包含在你的代码中。 而且,如果你在第一行之后有'var_dump($ cart_total)',你可以得到'string(35)“,这个值是2,429kr”',对不对? – 2014-09-23 11:25:28
是的,这是一个错字,编辑我的文章。 '的var_dump($ cart_total);''给出的字符串(45) “2,429kr”' 使用或不使用HTML,无论它仍然会工作,并导致相同的预期值 – 2014-09-23 11:32:58
'字符串(45)“2,429kr “'应该是字符串(7)”2,429kr“' – 2014-09-23 11:50:14