이메일 목록을 txt 파일에서 가져 와서 데이터베이스에 삽입하는 코드가 있습니다. 이미 데이터베이스에있는 경우 전자 메일을 추가하지 않도록합니다. 내가 지금하고있는 일은 txt 파일에서 전자 메일을 필터링하고 $ filter 배열 내의 문자열에 정확히 일치하거나 부분 일치하는 경우 삽입하지 않기 때문입니다. 즉, 이메일에 'gmail', '.ru'또는 'exec'이있는 이메일 주소가 있으면 추가하지 않을 것입니다.부분 일치 (또는 완전 일치)를위한 배열 검색
내 머리를 벽에 두드려서 피가 흘리는 것을 막는 데 도움이 될 것입니다!
코드 : 유효성 검사 기능에
$TheFile = "emails.txt";
$handle = fopen($TheFile, 'r');
$good_count = 0;
$bad_count = 0;
$filter= array("gmail",".ru","exec");
while (!feof($handle))
{
$Data = fgets($handle, 1024);
$output = explode (",",$Data);
$exist = mysql_query("SELECT * FROM table WHERE email='$output[0]'");
if (mysql_num_rows ($exist) == 0) {
$email = strtolower($output[0]);
$sql = "INSERT INTO table SET email='$email'";
mysql_query($sql);
$good_count = $good_count + 1;
}
else {
$bad_count = $bad_count + 1;
}
}
참고 사항 [mysql에 다중 값을 삽입하고 중복을 피하는 방법] (http://stackoverflow.com/q/5986137/161052) – JYelton
['INSERT IGNORE' 또는'INSERT REPLACE' ] (http://dev.mysql.com/doc/refman/5.1/en/insert.html)에서 중복 값을 건너 뛰거나 덮어 쓰게됩니다. – JYelton
고마워요.하지만 그게 내가 진짜로하는 것이 아닙니다. 나는 이미 중복 된 것들에 대해 문질러 사용하고있다. $ filter 배열에 대해 각 항목을 일치시키고 일치 항목이 있으면 삽입하지 않아야합니다. – 86Stang