удалить знак доллара из строки


Это меня озадачило

Попытка удалить знак доллара из строки оказалась невозможной, что здесь не так?

Вот с чем мне приходится работать:

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

Ничего не работает... почему ?

`

Author: lior r, 2013-09-11

7 answers

Ты сказал:

Плавающий(preg_replace('/[^\д.]/',", $цена[0]))
но он добавил "36" к номеру - вместо 18,95 я получил 3618,95

Мне приходит в голову, что у вас нет знака $ перед вашими значениями, но $ это представление $.

Чтобы проверить, верна ли моя догадка, выведите массив в терминале вместо браузера. Или посмотрите на источник страницы.

В этом случае вы могли бы сделать:

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

Или, более обобщенно:

$val = preg_replace('/&.*?;/', '', $val);
 8
Author: Toto, 2013-09-11 17:49:38

Это хорошо работает:

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

Вывод:

float 54.95
 2
Author: hsz, 2013-09-11 11:47:58

Использование:

<?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
)
 1
Author: Salim, 2013-09-11 11:56:50

Попробуйте это

<?php
    $price = '$12.00';
    $var = str_replace('$','',$price);
    echo $var;
    ?>
 0
Author: rams0610, 2013-09-11 11:47:00

Используйте 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

 0
Author: alpera, 2013-09-11 11:47:13

Если вы уверены, что $ всегда будет на первой позиции, простой и эффективный

substr($string,1);

Должен выполнить эту работу

 0
Author: Ruben Serrate, 2013-09-11 11:53:50

Если у вас возникли проблемы с поддержкой Юникода (странные символы, появляющиеся при использовании substr), это будет работать, если символ всегда первый.

$var = ltrim($цена[0],'$')

 0
Author: alimack, 2014-08-25 12:25:48