удалить знак доллара из строки
Это меня озадачило
Попытка удалить знак доллара из строки оказалась невозможной, что здесь не так?
Вот с чем мне приходится работать:
array(2) { [0]=> string(10) "$18.95" [1]=> string(11) " $17.06" }
Это то, что я пробовал
floatval($price[0]);
str_replace('$','',$price[0]);
ltrim($price[0],'$');
floatval(ltrim($price[0],'$'));
floatval(preg_replace("/^[^0-9\.]/","",$price[0]))
Единственным близким человеком был
floatval(preg_replace('/[^\d\.]/', '', $price[0]))
Но он добавил "36" к числу - вместо 18,95 я получил 3618,95
Ничего не работает... почему ?
`
7 answers
Ты сказал:
Плавающий(preg_replace('/[^\д.]/',", $цена[0]))
но он добавил "36" к номеру - вместо 18,95 я получил 3618,95
Мне приходит в голову, что у вас нет знака $
перед вашими значениями, но $
это представление $
.
Чтобы проверить, верна ли моя догадка, выведите массив в терминале вместо браузера. Или посмотрите на источник страницы.
В этом случае вы могли бы сделать:
$val = preg_replace('/$/', '', $val);
Или, более обобщенно:
$val = preg_replace('/&.*?;/', '', $val);
Это хорошо работает:
$input = "$18.95";
$output = floatval(ltrim($input, '$'));
$output += 36;
Вывод:
float 54.95
Использование:
<?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
)
Попробуйте это
<?php
$price = '$12.00';
$var = str_replace('$','',$price);
echo $var;
?>
Используйте 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");
Если вы уверены, что $ всегда будет на первой позиции, простой и эффективный
substr($string,1);
Должен выполнить эту работу
Если у вас возникли проблемы с поддержкой Юникода (странные символы, появляющиеся при использовании substr), это будет работать, если символ всегда первый.
$var = ltrim($цена[0],'$')