从字符串中删除美元符号

时间:2013-09-11 11:43:58

标签: php replace preg-replace

这让我感到困惑

试图从字符串中删除美元符号被证明是不可能的, 什么错了?

以下是我必须使用的内容:

array(2) { [0]=> string(10) "$18.95" [1]=> string(11) " $17.06" }

这是我试过的

  1. floatval($price[0]);
  2. str_replace('$','',$price[0]);
  3. ltrim($price[0],'$');
  4. floatval(ltrim($price[0],'$'));
  5. floatval(preg_replace("/^[^0-9\.]/","",$price[0]))
  6. 唯一关闭的是

    floatval(preg_replace('/[^\d\.]/', '', $price[0]))
    

    但它增加了“36”的数字 - 而不是18.95我得到了3618.95

    没有什么工作......为什么?

    `

7 个答案:

答案 0 :(得分:10)

你说:

  

floatval(preg_replace('/ [^ \ d。] /','',$ price [0]))
但是它添加了“36”   数字 - 而不是18.95我得到3618.95

我想到你的价值前面没有$符号,$代表$

为了查看我的猜测是否正确,请在终端而不是浏览器中打印数组。或者查看页面的来源。

在这种情况下,你可以这样做:

$val = preg_replace('/$/', '', $val);

或者更通才:

$val = preg_replace('/&.*?;/', '', $val);

答案 1 :(得分:2)

这个很好用:

$input   = "$18.95";
$output  = floatval(ltrim($input, '$'));
$output += 36;

输出:

float 54.95

答案 2 :(得分:1)

如果您确定$将始终位于第一位,那么简单而有效

substr($string,1);

应该做的工作

答案 3 :(得分:1)

使用:

<?php

$price = array( "0"=> "$18.95", "1"=> " $17.06" );
foreach($price as $key=>$value) {
    $price[$key] = trim(str_replace('$','',$value));
}
print_r($price);

?>

输出:

Array
(
    [0] => 18.95
    [1] => 17.06
)

答案 4 :(得分:0)

试试这个

<?php
    $price = '$12.00';
    $var = str_replace('$','',$price);
    echo $var;
    ?>

答案 5 :(得分:0)

使用str_replace()

// Provides: Hll Wrld f PHP
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");

http://php.net/manual/en/function.str-replace.php

答案 6 :(得分:0)

如果您遇到Unicode支持问题(使用substr出现的奇怪符号),如果符号始终是第一个,这将有效。

$var = ltrim($price[0],'$')