我需要将字符串的pregmatch_all中的所有匹配项(匹配项末尾带有“ DESCATALOGADO”的匹配项除外)写入CSV。
$pdfText= nl2br($text);
$patternECO = '/^(ECO(?!GEST|DE)(?!GEST|DE)[-\/\w]+(?: [UPMNB]{1,3}(?= ))*) ([^\r\n]+\S)/m' ;
preg_match_all($patternECO, $text, $matches);
$fp = fopen('file.csv', 'w');
foreach ($matches as $match) {
fputcsv($fp, $match);
}
fclose($fp);
例如,我来自pregmatch_all
Array (
[0] => Array (
[0] => ECO-698 Acondicionador Frio-Calor
[1] => ECO-CHI-522 Chimenea eléctrica con patas
[2] => ECO-CHI-530 Calefactor purificador
[3] => ECO-3005 Halógeno Oscilante 400-800-1200 Watts DESCATALOGADO
我想要这样的csv
ECO-698;Acondicionador Frio-Calor;
ECO-CHI-522;Chimenea eléctrica con patas;
ECO-CHI-530;Calefactor purificador;
答案 0 :(得分:2)
使用PREG_SET_ORDER
选项,以便在同一行结果中将每个匹配项中的所有捕获组合并在一起。
然后在循环中,从行中删除元素0
,因为这是整个匹配项,但是您只想将捕获组写入文件。
$patternECO = '/^(ECO(?!GEST|DE)(?!GEST|DE)[-\/\w]+(?: [UPMNB]{1,3}(?= ))*) ([^\r\n]+\S)/m' ;
preg_match_all($patternECO, $text, $matches, PREG_SET_ORDER);
$fp = fopen('file.csv', 'w');
foreach ($matches as $match) {
array_shift($match);
fputcsv($fp, $match);
}
fclose($fp);