2015-09-07 2 views
0

Я использую $_POST для отправки значений формы в PHP, а затем вставить в базу данных, у меня есть несколько входов для prices значений, которые выглядят так:PHP номер формата, прежде чем вставить в базу данных

1.000.000,00 (1 млн реалов «Бразильский Реал»)

Мне нужно, чтобы преобразовать его в 1000000.00 (DECIMAL (10,2) для вставки в базу данных)

Как я могу сделать это с помощью PHP number_format()?

Спасибо!

EDIT

number_format() Если это не функция я ищу, что лучше всего использовать в этом случае?

Кроме того, я нужна помощь в поиске решения, даже если значение пользователя 100.000,00

ответ

2
<?php 
$number = '1.000.000,00'; 
$replaced_number = str_replace(array('.',','), array('',''), $number); 
echo number_format($replaced_number,2,'.',''); 
?> 
+0

Это решение сработало для меня, спасибо товарищу :) –

0

Сначала замените (.) И (,) с помощью str_replace «», а затем использовать т следующей функции

number_format($replaced_number,$decimal)

2

Самый простой способ заключается в использовании str_replace() функции:

<?php 
$p = '1.000.000,00'; 
$p = str_replace('.', '', $p); 
$p = str_replace(',', '.', $p); 
echo $p; 
3
  1. Вы не можете сделать это с помощью формата чисел, это работает наоборот.
  2. То, что вы делаете, - это плохая практика. В представлении «Уровень» должен посылать примитивные данные контроллеру - если вы используете какой-либо расширенный компонент javascript для представления на отформатированный номер пользователя, это нормально, но подкладочный контроль формы должен отправлять примитивные данные, т.е. 10000000,00

Теперь, если ничего, что я уже говорил вам не применяется в данный конкретный момент, и имея в виду, что этот формат, который вы должны отправить фиксирована (точка для разделителя, кома для десятичного разделителя) , вы можете очистить значение, используя простой str_replace.

Но трюк заключается в том, чтобы заменить первую точку пустой строкой, а затем комой с точкой.

str_replace(',', '.',str_replace('.', '', $number)); 

Есть?

Но знайте, что то, что вы делаете, - это плохой подход и неправильная реализация, в конце концов, он укусит вас в a **.

+0

Я использую JQuery плагин Mask, так что пользователь не может ничего внутри этих входов вставки, а значение идет как маска, поэтому мне нужно, чтобы очистить его и преобразовать, чтобы сохранить в базу данных. –

+0

@WilliamXavier Я не использовал плагин jQuery Mask, но не кажется очень вероятным, что он был бы настолько негибким, что вы не сможете каким-то образом получить неформатированное значение из этого элемента. Я полностью согласен с этим ответом. Это не должно быть что-то, что вы делаете с PHP. – Mike

+1

Я обычно создаю свои собственные плагины jQuery для элементов управления формой. Моя обычная практика состоит в том, чтобы иметь «видимое» поле формы (например, текстовое поле БЕЗ атрибута имени - он не получит отправки через submit) и скрыт для поля. Теперь, когда видимое поле изменяется, скрытый получает обновление с чистым значением. В форме submit - скрытое поле отправляется на сервер с чистым примитивным значением. Это мой подход, который я очень рекомендую. –

0

Если вы посмотрите на php.net вы легко увидеть правильный синтаксис для вашей цели: number_format («» $ номер, 2, «») Первым параметром является количество десятичных знаков в вашем случае это 2. Второй символ используется для десятичного разделителя, а третий - для тысяч, которые в вашем случае не будут ничего.

Смежные вопросы