Как удалить запятые из числовых значений в строке с другими запятыми?

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

Например, мой массив содержит такие индексы, как:

26 => 20/08/2099,"ATM CASH WITHDRAWAL (ON-US) ATM CASH WITHDRAWAL (ON-US) EMPEMOM, LAGA ATM 2 LOGO NG 000360585490","",20/08/2018,"5,000","","1,316.01"

27 => 27/08/2027,BANK CHARGE 26 SMS CHARGE AND VAT FOR 27TH JUL - 23RD AUG 2018,2803064 028,27/08/2018,109.2,"","1,206.81"

Я хочу удалить запятую в «5000» и других денежных значениях, не удаляя запятые между каждой строкой, чтобы вывод выглядел так:

26 => 20/08/2099,"ATM CASH WITHDRAWAL (ON-US) ATM CASH WITHDRAWAL (ON-US) EMPEMOM, LAGA ATM 2 LOGO NG 000360585490","",20/08/2018,"5000","","1316.01"

27 => 27/08/2027,BANK CHARGE 26 SMS CHARGE AND VAT FOR 27TH JUL - 23RD AUG 2018,2803064 028,27/08/2018,109.2,"","1206.81"

Исходные данные плохо сформированы. Откуда он берется и есть ли варианты получить его в другом формате?

Dave 10.04.2019 19:20

Если вы сделаете взрыв, запятые между кавычками не будут разделителями.

Rafael Estrada 10.04.2019 18:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
247
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать foreach свой массив и взорвать запятую, затем заменить "," каждый массив, а затем проверить, является ли он числом или нет

массив foreach, затем взорвать строку запятой

$stringArray=explode(",",$str)

затем замените "," каждый $stringArray

$CheckNumber= str_replace(',', '', $string);

и проверьте, является ли это числом:

if (is_numeric($CheckNumber))
   $stringArray[i]=$CheckNumber;

в конце присоединиться к массиву

join(",",$stringArray);
Ответ принят как подходящий

Вы также можете использовать массив_карта с preg_replace_callback и в качестве шаблона, который вы можете использовать:

"\d{1,3}(?:,\d{3})+\.\d{2}"
  • "\d{1,3} Соответствует ", за которым следуют 1-3 цифры
  • (?:,\d{3})! Повторите 1+ раз, сопоставив запятую и 3 цифры.
  • \.\d{2}" Соедините точку и 2 цифры, а затем "

Демонстрация регулярных выражений | демонстрация Php

В обратном вызове preg_replace_callback замените запятую пустой строкой и верните совпадение.

Например:

$atm = array(
    '26' => '20/08/2099,"ATM CASH WITHDRAWAL (ON-US) ATM CASH WITHDRAWAL (ON-US) EMPEMOM, LAGA ATM 2 LOGO NG 000360585490","",20/08/2018,"5,000","","1,316.01"',
    '27' => '27/08/2027,BANK CHARGE 26 SMS CHARGE AND VAT FOR 27TH JUL - 23RD AUG 2018,2803064 028,27/08/2018,109.2,"","1,206.81"'
);

$atm = array_map(function($x) {
    return preg_replace_callback('/"\d{1,3}(?:,\d{3})+\.\d{2}"/', function($m) {
       return  str_replace(',', '', $m[0]);
    }, $x);
}, $atm);

print_r($atm);

Результат:

Array
(
    [26] => 20/08/2099,"ATM CASH WITHDRAWAL (ON-US) ATM CASH WITHDRAWAL (ON-US) EMPEMOM, LAGA ATM 2 LOGO NG 000360585490","",20/08/2018,"5,000","","1316.01"
    [27] => 27/08/2027,BANK CHARGE 26 SMS CHARGE AND VAT FOR 27TH JUL - 23RD AUG 2018,2803064 028,27/08/2018,109.2,"","1206.81"
)

Другие вопросы по теме