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 に答える
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 に答える