3

这个让我很疑惑

试图从字符串中删除美元符号被证明是不可能的,这里有什么问题?

这是我必须使用的:

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]))

唯一接近的是

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

但它在数字上添加了“36” - 而不是 18.95 我得到了 3618.95

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

`

4

7 回答 7

13

你说:

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

$在我看来,你的价值观前面没有标志,但那$$.

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

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

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

或者,更通才:

$val = preg_replace('/&.*?;/', '', $val);
于 2013-09-11T17:49:38.540 回答
4

这个效果很好:

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

输出:

float 54.95
于 2013-09-11T11:47:58.073 回答
2

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

$var = ltrim($price[0],'$')
于 2014-08-25T12:25:48.910 回答
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
)
于 2013-09-11T11:56:50.543 回答
1

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

substr($string,1);

应该做的工作

于 2013-09-11T11:53:50.630 回答
0

尝试这个

<?php
    $price = '$12.00';
    $var = str_replace('$','',$price);
    echo $var;
    ?>
于 2013-09-11T11:47:00.770 回答
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

于 2013-09-11T11:47:13.763 回答