[PHP] Как сделать проверку на присутствие строки в файле?

12
S
На сайте с 06.08.2008
Offline
130
1131

Пишу информацию в файл, полученную методом GET.

<?php
$log = $_GET['data'];
$fp = fopen("log.txt","a+");
fwrite($fp,"$log\n");
fclose($fp);
?>

Сайчас в файл пишется всё подряд. Как сделать проверку на дубль строки и писать только уникальную строку в файл?

ЗЫ: Не нужно отправлять меня на php.net - что-то ничего толкового там не нашел..

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#1

Ну да, как вас отправить на php.net т.к. тут уже нужен программист и написать алгоритм?

А как вы себе представляете, как вот проверить на дубли, без знаний языка, по пунктам?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
S
На сайте с 06.08.2008
Offline
130
#2

LEOnidUKG, от вас я помощи и не ожидал..

Может есть у кого-то готовое решение.

Joker-jar
На сайте с 26.08.2010
Offline
154
#3

file — Читает содержимое файла и помещает его в массив

array_unique — Убирает повторяющиеся значения из массива

Полученное решение не будет претендовать на эталон оптимизации.

Mad_Man
На сайте с 10.11.2008
Offline
162
#4
Joker-jar:
Полученное решение не будет претендовать на эталон оптимизации.

На медленное УГ претендует ваш алгоритм. Не нужно читать весь файл, как и не нужно сортировать квиксортом его.

http://stackoverflow.com/a/9059073 (построчное чтение, всем радоваться два часа).

Ида, на форуме сеонистов не уметь гуглить - это уже позор. Впадлу пару слов вбить штоле?

S
На сайте с 06.08.2008
Offline
130
#5

Пробую так:

<?php
$log = $_GET['data'];
$data = file('log.txt');
$res = array_unique($data);
$fp = fopen("log.txt","a+");
fwrite($fp,"$res\n");
fclose($fp);
?>

Пишет пустой массив. Что не так?

PS: У меня нет задачи стать мега-программером. Просто пытаюсь передалать готовый скрипт под свои нужды. Получается как-то не очень - нужна помощь..

Mad_Man
На сайте с 10.11.2008
Offline
162
#6
spiderbuber:
Пишет пустой массив. Что не так?

Зачем вы массив пропихиваете в fwrite? Впадлу php.net открыть и посмотреть, что ожидается строка?

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#7
Получается как-то не очень - нужна помощь..

Вы не просите помощи, вы просите за вас написать скрипт. Не надо там детский сад устраивать.

У меня нет задачи стать мега-программером.

А и не надо, закажите у программиста, пусть вам напишет и всё.

S
На сайте с 06.08.2008
Offline
130
#8
Mad_Man:
http://stackoverflow.com/a/9059073 (построчное чтение, всем радоваться два часа).

Пробую так:

<?php

$handle = fopen('log.txt', 'r');
$valid = false; // init as false
while (($buffer = fgets($handle)) !== false) {
if (strpos($buffer, $id) !== false) {
$valid = TRUE;
break; // Once you find the string, you should break out the loop.
}
}
fclose($handle);

$log = $_GET['data'];
$fp = fopen("log.txt","a+");
fwrite($fp,"$log\n");
fclose($fp);
?>

Не работает..

R
На сайте с 18.12.2009
Offline
92
#9

И не будет работать, пока вы не будете понимать, что и для чего у Вас в коде.

S
На сайте с 06.08.2008
Offline
130
#10

Помнится раньше на этом форуме неплохо помогали.

Походу прошли эти времена.. Жаль..

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий