PHPでCSV重複チェックをする方法
PHPでCSVファイル内の重複データをチェックする方法を紹介します。入力された値がCSV内にすでに存在するかを確認し、重複しているかを判定できます。メールアドレス、商品コード、会員IDなどの重複チェックに利用できるサンプルコードです。
コードについて
本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
チェック結果:未確認
登録済みCSVデータ
taro@example.com
hanako@example.com
ichiro@example.com
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が利用できるローカル環境で行ってください。
コメント