Как я должен получить единственное число в формате float из строки, начинающейся со знака доллара?

#php #string

#php #строка

Вопрос:

У меня есть следующий код:

 <?php
  $amount = '$40.0';
?>
  

Я хочу получить только число 40 (в форме с плавающей запятой) из строки $ 40, т.Е. После исключения знака доллара. Число, введенное пользователем, может быть даже плавающим, например, $ 345,894534. В случае числа с плавающей запятой я должен получить все число с плавающей запятой, кроме знака доллара. Кроме того, переменная может быть пустой время от времени, поэтому операция приведения к типу должна выполняться только тогда, когда переменная содержит некоторое значение. Как я должен сделать это оптимальным образом и используя готовые функции, доступные в PHP? Может кто-нибудь, пожалуйста, помочь мне в этом отношении?Заранее спасибо.

Комментарии:

1. Я бы рекомендовал регулярное выражение. regular-expressions.info Небольшая работа с substr тоже была бы хороша. Это настолько тривиально, что «наиболее оптимальный» вряд ли имеет значение.

2. @MarkBaker: Я исправил свой код.

Ответ №1:

 $amount = floatval(str_replace('$','','$40.2356'));   //0 for empty string
  

Комментарии:

1. Обратите внимание, что вы не должны использовать числа с плавающей запятой для денежных значений.

2. @deceze это правда, но OP использовал это слово float так много раз, что я ничего не мог с этим поделать.

Ответ №2:

 $amount = '$345.894534';
$trimmed = ltrim($amount, "$"); // will return 345.894534