Подскажите как при записи в файл не допускать дублирующее значение, как это правильно сделать есть файл 1<|>Petro Boiko<|>bridun<|> 2<|>Petro<|>petro<|> 3<|>Petro<|>petro<|> PHP: $data = file("file.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); foreach($data as $rows) { $row = explode("<|>", $rows); if (!strripos($rows, "<|>")) continue; } ////////////////////// if (is_writeable("file.txt")) { $f = fopen("file.txt", "a+"); $write_text = "$max<|>$name<|>$mess<|>\n"; } ////////////////////// if (in_array($row[2], $rows)) { //Если уже есть в массиве // удаляем строку echo ("Запись существует."); } else { fputs($f, $write_text); fclose($f); echo ("Запись добавлена."); } //else echo ("Не удалось записать в файл"); } }
Проверять наличие этой записи в файле. Можно получить массив файла и пройтись по нему, можно через strpos(), можно циклом проходиться до конца файла feof() и если строки нет, то записывать.
Если смотреть на код выше, то как-то так: 1. Формируем PHP: $write_text = "<|>$name<|>$mess<|>\n"; 2. Открываем файл для чтения и записи 3. Запускаем цикл с feof() каждый шаг увеличивая на 1 4. В цикле проверяем наличие подстроки в строке: можно через strpos() можно через explode() 5. Если $write_text не найден, то берем количество шагов +1, это будет $max и формируем строку записи $write_text="$max.$write_text; 6.Дописываем в конец файла 7.fclose()