我有一个包含里面价格的字符串。
我需要删除小数部分和货币部分。
PHP可以使用str_replace()
函数删除货币符号,但小数部分因产品而异。
<span class="price" id="old-price-3">€ 200,00 </span>
<span class="price" id="product-price-3">€ 80,00</span>
我需要这样:
<span class="price" id="old-price-3">200 </span>
<span class="price" id="product-price-3">80</span>
我尝试了str_replace()
:
echo str_replace(array(',00','€'),'','<span class="price" id="old-price-3">200 </span>
<span class="price" id="product-price-3">80</span>');
但这仅在小数00
时才有效。有人可以帮我这个吗?
答案 0 :(得分:2)
您可以使用此正则表达式:
/€ ([0-9]+),([0-9]+)/
<强>详情:
€ start the match with € and a space
([0-9]+) match any digit 1 or more times
, match a comma after the first number
([0-9]+) match any digit 1 or more times after the comma
像这样:
<?php
$s = '<span class="price" id="old-price-3">€ 200,00 </span>
<span class="price" id="product-price-3">€ 80,00</span>';
var_dump(htmlentities(preg_replace("/€ ([0-9]+),([0-9]+)/", "$1", $s)));
答案 1 :(得分:2)
您不需要多个函数调用。
匹配€
,然后匹配零个或多个非数字,然后捕获一个或多个数字,然后匹配结束范围标记之前的任何内容。替换为捕获的匹配。
代码:(Demo)(Pattern Demo)
$string='<span class="price" id="old-price-3">€ 200,00 </span>
<span class="price" id="product-price-3">€ 80,00</span>';
echo preg_replace("/€\D*(\d+)[^<]*/","$1",$string);
输出:
<span class="price" id="old-price-3">200</span>
<span class="price" id="product-price-3">80</span>
答案 2 :(得分:-2)
您可以使用strtok:
$x="200,00";
$x = strtok($x, ',');
现在x = 200;)