0

現在、php を使用して csv ファイルを開き、特定のコンテンツを含むセルをチェックし、if-else を使用して特定の情報を取得しています。ただし、セルに一部の情報の一部が含まれているかどうかを確認する必要があります。

例えば

現在のコード:

$error_handle = fopen("$reportUrl", "r");
while (!feof($error_handle) )
{
    $line_of_text = fgetcsv($error_handle, 1024);
    if($line_of_text[0] !== "")
        {
            $countErrors++;
        }
}
fclose($error_handle);

私が欲しいコード:

$error_handle = fopen("$reportUrl", "r");
while (!feof($error_handle) )
{
    $line_of_text = fgetcsv($error_handle, 1024);
    if($line_of_text[4] == "$date *")
        {
            $countErrors++;
        }
}
fclose($error_handle);

「*」はテキスト行ごとに異なる時間を表しているため、使用できませんが、同じセルの一部です。同じ日付で時間の異なるセルを選択するにはどうすればよいですか?

参考までに、日付の形式は通常「15/01/2013 12:06pm」です。

4

4 に答える 4

1

strpos関数を使用します。

if(strpos($line_of_text[4], "$date ") ===0) { found }

私はそれを持っていると思います:

私は以下を使用しています:

        while (!feof($error_handle) )
        {
            $line_of_text = fgetcsv($error_handle, 1024);
            if(strpos($line_of_text[4], $date) !== false)
                {
                    $countErrors++;
                }
        }
    fclose($error_handle);

動作しているようです

于 2013-01-16T13:59:23.247 に答える
0

'15/01/2013 12:06 pm'などの代わりに、日付と時刻のタイムスタンプをファイルに保存できるため、タイムスタンプを取得して、必要に応じて日付をフォーマットできます。

于 2013-01-16T14:05:57.353 に答える
0

SplFileObjectまた、CSV モードに設定してから、条件(セル インデックス 4、文字列比較) に基づいて行をフィルタリングし、カウントすることもできます (「 」を参照)。$dateiterator_count

$rows     = new SplFileObject($reportUrl);
$rows->setFlags($rows::READ_CSV);
$filtered = new CallbackFilterIterator($rows, function ($current) use ($date) {
    return strpos($current[4], "$date ") === 0;
});
$countErrors = iterator_count($filtered);
于 2013-01-16T14:26:47.497 に答える
0
    while (!feof($error_handle) )
        {
            $line_of_text = fgetcsv($error_handle, 1024);
            if(strpos($line_of_text[4], $date) !== false)
                {
                    $countErrors++;
                }
        }
    fclose($error_handle);
于 2013-01-16T14:13:41.313 に答える