Есть ли хороший способ сократить денежные ценности с долларов, евро, швейцарских франков и так далее.
У меня есть денежные ценности, содержащие денежные знаки, которые мне не нужны, поэтому есть ли функция php или что-то, что удаляет эти вещи (все денежные знаки мира)
Текущие значения
#current -> #stripped value(what im looking for)
€ 2.66 -> 2.66
445.77 € -> 445.77
$ 4561.44 -> 4561.44
CHF 3`009.55 -> 3`009.55
Обновлено:
Я нашел шаблон регулярного выражения, но он удалит знак `sign to.
/[^0-9,.`]/
Дерьмовый способ - вы могли бы сами создать функцию, которая удаляет каждый символ из строки, возвращает целые числа, запятые и десятичные дроби и возвращает все, что возвращается в виде числа с плавающей запятой.
Найдите библиотеку, которая справится с этим за вас, например: github.com/moneyphp/money. Я настоятельно рекомендую нет попробовать свои силы с нуля, деньги очень быстро усложняются, и вы действительно не хотите ошибиться.
Угадайте, что 2561.44 - опечатка?
Зависит от того, соответствуют ли строки вашей валюты формату, распознаваемому NumberFormatter :: parseCurrency ...
Честно говоря, если ваша область действия не очень ограничена, не пытайтесь сделать это самостоятельно с помощью Regex. В Великобритании перед денежным эквивалентом ставится соответствующий знак валюты, в других местах - суффикс. В Великобритании мы используем запятую в качестве разделителя тысяч, в других местах запятая используется для разделения десятичных знаков, в то время как десятичная точка используется для разделения тысяч, в других местах используется пробел. Как вы собираетесь хранить эти значения, может быть поплавок? О боже. А как насчет налоговых ставок? Что вы имеете в виду, что у японцев нет десятичных значений? .... Найдите хорошую библиотеку.
Разве вы не можете просто добавить обратную кавычку к этому регулярному выражению? / [^0-9,.`] /
Я пробовал этот шаблон, но он удалит обратную кавычку
Вы хотите сопоставить /([0-9,.` sizes+)/, потому что ^ в начале класса символов отрицает его, что означает все, кроме этих символов
Чтобы сделать ситуацию еще более запутанной, вы также можете добавить префикс к валюте, чтобы сделать ее тысячами или миллионами и т. д., Например, когда вы смотрите отчеты о бизнесе. Например, 100 tkr означает 100 000 kr, если вы просто удалите tkr, ваши данные недействительны.
И ваш вопрос не имеет смысла, поскольку вы хотите вернуть целое число, но хотите оставить ` в качестве возврата. Это недопустимое целое число.






$str = '445.77 € ';
preg_match_all('!\d+!', $str, $value);
print_r($value[0][0].'.'.$value[0][1]);
Это упадет с японской иеной.
Попробуй это
$test = 'CHF 3`009.55';
preg_replace('/[^0-9-.`]+/', '', $test); //return 3`009.55
@ user759235 уверен, что это так. Это не целое число, но это то, что вы ожидаете 3v4l.org/E9XZv
Нет, для чего-то такого особенного не существует специальной функции. Вам придется написать его самому. Я, вероятно, выбрал бы регулярное выражение и сопоставил бы только те части, которые вам нужны (цифры, десятичная точка, `)