嘗試去除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