/(.*)<FooBar>/s
s вызывает Dot (.) для соответствия возврату каретки
Давайте посмотрим на это
У меня есть число с плавающей запятой 32 000, 00, и оно анализирует
blockquote>Нет, у вас есть строка
"32 000, 00"
. Поэтому, если мы посмотрим, как PHP выполняет жонглирование типовhttp://php.net/manual/en/language.types.type-juggling.php
Мы см. несколько примеров, подобных этому:
$foo = 5 * "10 Little Piggies"; // $foo is integer (50)
Таким образом, значение этих 2 умножается на
50
или5*10
, а десять разбирается из"10 Little Piggies"
. PHP будет применять те же правила к тому, что у вас есть выше, что приводит к32
. Потому что это строка с этимиspaces
PHP сделает это почти так же, как и выше.Вы можете легко проверить это:
echo floatval('32 000, 00');
Вывод
32
Возможно, вам придется вручную преобразовать это в то, что так должно быть. Легко сделать, просто убрав пробелы:
echo floatval(str_replace([' ',','], ['','.'], '32 000, 00')); #output 32000 echo floatval(str_replace([' ',','], ['','.'], '32 290,01')); #output 32290.01
Если я правильно помню, некоторые страны используют
,
в качестве.
для десятичного разделителя. Но мне пришлось заменить,
на.
, чтобы заставить их работать ... Могут быть некоторые крайние случаи, когда это не сработает, но без большей выборки данных я не могу сказать наверняка. [ 1126] 1127 Где и почему эти пространства там, я понятия не имею. Было бы лучше полностью удалить их из XML, но это может оказаться невозможным.
Без определенного кода в вопросе это лучшее, что я могу сделать.
Ура!