从字符串中删除美元符号

lio*_*r r 2 php replace preg-replace

这让我感到困惑

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

这是我必须要做的事情:

array(2) { [0]=> string(10) "$18.95" [1]=> string(11) " $17.06" }
Run Code Online (Sandbox Code Playgroud)

这是我试过的

  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]))
Run Code Online (Sandbox Code Playgroud)

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

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

`

Tot*_*oto 10

你说:

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

在我看来,你$的价值观前面没有一个标志,但这$就是代表$.

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

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

$val = preg_replace('/$/', '', $val);
Run Code Online (Sandbox Code Playgroud)

或者,更通才:

$val = preg_replace('/&.*?;/', '', $val);
Run Code Online (Sandbox Code Playgroud)