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('/&#36;/', '', $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],'$')