Php 从字符串中删除美元符号
这件事让我感到困惑 试图从字符串中删除美元符号被证明是不可能的, 这里怎么了 以下是我必须处理的问题:Php 从字符串中删除美元符号,php,replace,preg-replace,Php,Replace,Preg Replace,这件事让我感到困惑 试图从字符串中删除美元符号被证明是不可能的, 这里怎么了 以下是我必须处理的问题: array(2) { [0]=> string(10) "$18.95" [1]=> string(11) " $17.06" } 这就是我尝试过的 floatval($price[0]) stru替换('$','$price[0]) ltrim($price[0],“$”) floatval(ltrim($price[0],“$”) floatval(preg_replace(
array(2) { [0]=> string(10) "$18.95" [1]=> string(11) " $17.06" }
这就是我尝试过的
floatval($price[0])代码>
stru替换('$','$price[0])代码>
ltrim($price[0],“$”)代码>
floatval(ltrim($price[0],“$”)代码>
floatval(preg_replace(“/^[^0-9\.]/”,“,$price[0]))
floatval(preg_replace('/[^\d\.]/', '', $price[0]))
但它在数字上加了“36”——我得到的不是18.95,而是3618.95
什么都没用。。。为什么?
`试试这个
<?php
$price = '$12.00';
$var = str_replace('$','',$price);
echo $var;
?>
使用str_replace()
这一款效果很好:
$input = "$18.95";
$output = floatval(ltrim($input, '$'));
$output += 36;
输出:
float 54.95
Array
(
[0] => 18.95
[1] => 17.06
)
如果您确信美元将始终处于第一位,那么这是一个简单而有效的方法
substr($string,1);
应该使用以下方法来完成工作:
<?php
$price = array( "0"=> "$18.95", "1"=> " $17.06" );
foreach($price as $key=>$value) {
$price[$key] = trim(str_replace('$','',$value));
}
print_r($price);
?>
你说:
floatval(preg_replace('/[^\d.]/','$price[0]))但它添加了“36”
我得到的是3618.95,而不是18.95
在我看来,你的价值观前面没有一个$
符号,而是$
这是$
的表示形式
为了查看我的猜测是否正确,请在终端而不是浏览器中打印阵列。或者查看页面的来源
在这种情况下,您可以执行以下操作:
$val = preg_replace('/$/', '', $val);
或者,更通才:
$val = preg_replace('/&.*?;/', '', $val);
如果您在Unicode支持方面遇到问题(使用
substr
时出现奇怪的符号),如果符号始终位于第一位,这将起作用
$var = ltrim($price[0],'$')
$price=str_replace(“$”,“$price[0])代码>不工作?每个记录都有美元符号吗?为什么不使用删除第一个字符?$price[0]=str_replace(“$”,“$price[0])代码>?您的str_替换应该可以工作。因此,您的代码中还有其他错误。问题是它不是一个真正的美元符号,而是它的html表示形式($;)-var#u dump不应该知道并显示它吗?对我来说不起作用-我得到了数组(2){[0]=>string(10)”$18.95”[1]=>string(10)”$17.06}这就是我得到的数组(2){[0]=>string(9)”\36;18.95=>string(9)”\36;17.06”}这应该行得通,但我认为unicode支持可能正在成为阻碍。我见过这个失败,尽管它不应该。小心,当$input为负时,它不起作用。例如:18.95美元。
$var = ltrim($price[0],'$')