Я работаю с массивом, который содержит выписку по счету. Я хочу иметь возможность удалять запятые из числовых значений, чтобы иметь возможность взорваться запятой без потери жизненно важных значений.
Например, мой массив содержит такие индексы, как:
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"
Если вы сделаете взрыв, запятые между кавычками не будут разделителями.






Вы можете использовать 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"
)
Исходные данные плохо сформированы. Откуда он берется и есть ли варианты получить его в другом формате?