PHPでCSV重複チェックをする方法【サンプルコード付き】

php

PHPでCSV重複チェックをする方法

PHPでCSVファイル内の重複データをチェックする方法を紹介します。入力された値がCSV内にすでに存在するかを確認し、重複しているかを判定できます。メールアドレス、商品コード、会員IDなどの重複チェックに利用できるサンプルコードです。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

チェック結果:未確認
登録済みCSVデータ
taro@example.com
hanako@example.com
ichiro@example.com

コードをコピーして使おう!

PHPファイルとCSVファイルを同じフォルダへ配置してください。
入力したメールアドレスがCSV内に存在するか確認し、重複しているかを判定します。

<?php

$message = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    $email = trim($_POST['email'] ?? '');

    $duplicate = false;

    if (($fp = fopen('data.csv', 'r')) !== false) {

        while (($row = fgetcsv($fp)) !== false) {

            if (($row[0] ?? '') === $email) {

                $duplicate = true;
                break;

            }

        }

        fclose($fp);

    }

    if ($duplicate) {

        $message =
          'このメールアドレスはすでに登録されています。';

    } else {

        $message =
          'このメールアドレスは登録できます。';

    }

}

?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>CSV重複チェック</title>

<style>

body{
    font-family:sans-serif;
    margin:20px;
}

.duplicate-wrap{
    border:1px solid #e5e7eb;
    border-radius:20px;
    padding:24px;
    background:#fff;
}

label{
    display:block;
    margin-bottom:8px;
    font-weight:700;
}

input{
    width:100%;
    padding:14px 16px;
    border:1px solid #d1d5db;
    border-radius:10px;
    font-size:16px;
    box-sizing:border-box;
}

.check-btn{
    margin-top:16px;
    border:none;
    background:#ff6a00;
    color:#fff;
    padding:14px 24px;
    border-radius:10px;
    font-size:16px;
    font-weight:700;
    cursor:pointer;
}

.result{
    margin-top:16px;
    padding:12px 16px;
    background:#f8fafc;
    border:1px solid #e5e7eb;
    border-radius:10px;
}

</style>

</head>
<body>

<div class="duplicate-wrap">

  <form method="post">

    <label>メールアドレス</label>

    <input
      type="email"
      name="email"
      required>

    <button
      type="submit"
      class="check-btn">
      重複チェック
    </button>

  </form>

  <?php if($message): ?>

    <div class="result">
      チェック結果:<br>
      <?= htmlspecialchars($message,ENT_QUOTES,'UTF-8') ?>
    </div>

  <?php endif; ?>

  <div class="result">
    <strong>登録済みCSVデータ</strong><br>
    taro@example.com<br>
    hanako@example.com<br>
    ichiro@example.com
  </div>

</div>

</body>
</html>

ファイル構成と設置方法

このサンプルで使用するファイル構成です。
index.php と data.csv を同じフォルダ(同じ階層)へ配置してください。

sample
├─ index.php
└─ data.csv

data.csv に登録済みメールアドレスを保存します。
フォームから入力されたメールアドレスが data.csv 内に存在するか確認し、重複している場合は登録済みメッセージを表示します。

サーバーへ設置する場合は、上記ファイルを同じフォルダへアップロードしてください。

PHPはサーバー上で実行されるため、PHPファイルをダブルクリックしても動作しません。動作確認はレンタルサーバーへアップロードするか、PHPが利用できるローカル環境で行ってください。


コメント