查找匹配项后拆分文本文件


Split text file aftering finding a match

我正在尝试搜索字符串匹配,然后拆分文件内容。经过一些尝试和错误,我希望有人能伸出援助之手。在 fgetcsv 之后,搜索字符串几乎变得毫无意义。理想情况下,我想找到"约会"的每个出现,并用逗号拆分内容。

if (($handle = fopen('file.csv', "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    if(preg_match('/appointments/', $data, $matches, 0))
    {
        $split = preg_split("/,/", $data);
        print_r($split);
    }
}
fclose($handle);
}

打印语句不会返回任何内容。

用逗号拆分内容是什么意思?还是要在每个"约会"后添加一个逗号?

代替fgetcsv,使用fread并将"约会"替换为"约会",使用str_replace

$filename = 'file.csv';
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
$contents = str_replace('appointments', 'appointments, ', $contents);
echo $contents;

如前所述,该文件具有 ASCII 字符,需要在处理之前进行清理。

获取文件并循环后,剥离 ASCII 字符集的内容。

$stripAscii = preg_replace('/[^('x20-'x7F)]*/','',$data);
$datePos = strpos($stripAscii,'Appointment:');
$data = substr($data, $datePos); 
$data = str_replace('Appointment:', ' ', $row2);

现在,返回"约会:"之后的所有字段。