Anonymous
Очистите строку CSV, содержащую значения в двойных кавычках.
Сообщение
Anonymous » 10 янв 2025, 07:10
Я пытаюсь проанализировать и очистить динамическую строку CSV (
), который имеет значения в кавычках.
Строка имеет следующий формат:
Код: Выделить всё
"AARON, ELVIA J",WATER RATE TAKER,WATER MGMNT,$81000.00,$73862.00
Мне нужно изменить строку, чтобы удалить запятые, пробелы и кавычки из значений в кавычках, чтобы она выглядела так:
Код: Выделить всё
AARONELVIAJ,WATER RATE TAKER,WATER MGMNT,$81000.00,$73862.00
Что я сделал:
Код: Выделить всё
$re1 = '(")'; # Any Single Character 1
$re2 = '((?:[a-z][a-z]+))'; # Word 1
$re3 = '(,)'; # Any Single Character 2
$re4 = '(\\s+)'; # White Space 1
$re5 = '((?:[a-z][a-z]+))'; # Word 2
$re6 = '(\\s+)'; # White Space 2
$re7 = '.*?'; # Non-greedy match on filler
$re8 = '(")';
$reg1 = "/" . $re1 . $re2 . "/";
$reg2 = "/" . $re3 . $re4 . "/";
$reg3 = "/" . $re5 . $re6 . $re7 . $re8 . "/";
$line = preg_replace("/" . '($reg1)$reg2($reg3)' . "/", "$1$2", $line); //this is also generating the same array "AARON, ELVIA J",WATER RATE TAKER,WATER MGMNT,$81000.00,$73862.00
echo "
", print_r($line, 1), "";
$pattern = "/" . $re1 . $re2 . $re3 . $re4 . $re5 . $re6 . $re7 . $re8 . "/";
$replacement = "/" . $re2 . $re5 . $re7 . "/";
$values = preg_replace($pattern, $replacement, $line);
$values = explode(',',$line);
echo "
";
$values = preg_replace('/[^A-Za-z0-9\-]/', '', $values);
$values = implode(',',$values);
echo "", print_r($values), "";
echo "", print_r($values, 1), "";
Я получаю следующее:
Код: Выделить всё
AARON,ELVIAJ,WATERRATETAKER,WATERMGMNT,8100000,73862001
Мне нужно удалить внутреннюю запятую из значения, заключенного в кавычки.
Подробнее здесь:
https://stackoverflow.com/questions/415 ... ted-values
1736482250
Anonymous
Я пытаюсь проанализировать и очистить динамическую строку CSV ([code]$line[/code]), который имеет значения в кавычках. [code]echo " ", print_r($line, 1), ""; [/code] Строка имеет следующий формат: [code]"AARON, ELVIA J",WATER RATE TAKER,WATER MGMNT,$81000.00,$73862.00[/code] Мне нужно изменить строку, чтобы удалить запятые, пробелы и кавычки из значений в кавычках, чтобы она выглядела так: [code]AARONELVIAJ,WATER RATE TAKER,WATER MGMNT,$81000.00,$73862.00[/code] Что я сделал: [code]$re1 = '(")'; # Any Single Character 1 $re2 = '((?:[a-z][a-z]+))'; # Word 1 $re3 = '(,)'; # Any Single Character 2 $re4 = '(\\s+)'; # White Space 1 $re5 = '((?:[a-z][a-z]+))'; # Word 2 $re6 = '(\\s+)'; # White Space 2 $re7 = '.*?'; # Non-greedy match on filler $re8 = '(")'; $reg1 = "/" . $re1 . $re2 . "/"; $reg2 = "/" . $re3 . $re4 . "/"; $reg3 = "/" . $re5 . $re6 . $re7 . $re8 . "/"; $line = preg_replace("/" . '($reg1)$reg2($reg3)' . "/", "$1$2", $line); //this is also generating the same array "AARON, ELVIA J",WATER RATE TAKER,WATER MGMNT,$81000.00,$73862.00 echo " ", print_r($line, 1), ""; $pattern = "/" . $re1 . $re2 . $re3 . $re4 . $re5 . $re6 . $re7 . $re8 . "/"; $replacement = "/" . $re2 . $re5 . $re7 . "/"; $values = preg_replace($pattern, $replacement, $line); $values = explode(',',$line); echo " "; $values = preg_replace('/[^A-Za-z0-9\-]/', '', $values); $values = implode(',',$values); echo "", print_r($values), ""; echo "", print_r($values, 1), ""; [/code] Я получаю следующее: [code]AARON,ELVIAJ,WATERRATETAKER,WATERMGMNT,8100000,73862001[/code] Мне нужно удалить внутреннюю запятую из значения, заключенного в кавычки. Подробнее здесь: [url]https://stackoverflow.com/questions/41546107/sanitize-a-csv-string-containing-double-quoted-values[/url]