0

文字列の一致を検索してから、ファイルの内容を分割しようとしています。試行錯誤の末、誰かが手を差し伸べてくれることを願っています。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);
}

print ステートメントは何も返しません。

4

2 に答える 2

0

コンテンツをカンマで分割するとはどういう意味ですか?または、各「予定」の後にコンマを追加しますか?

の代わりにfgetcsv、「appointments」を使用freadして「appointments」に置き換えます。str_replace

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

$contents = str_replace('appointments', 'appointments, ', $contents);
echo $contents;
于 2012-06-11T21:04:25.223 に答える
0

前述のとおり、ファイルには ASCII 文字が含まれており、処理前に消去する必要があります。

ファイルを取得してループした後、ASCII 文字セットの内容を取り除きます。

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

これで、「Appointment:」以降のすべてのフィールドが返されます。

于 2012-06-20T15:05:15.960 に答える