Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2011, 00:22   #1
DKENT
Форумчанин
 
Регистрация: 09.09.2010
Сообщений: 114
Сообщение Проверка текста из файла!!!

Здраствуйте как посредством php
Прочитать txt файл и если текст который я в него хочу добавить уже есть то незаписывать этот текст?

К примеру есть такой файл txt

Цитата:
344
356
875
575
367
346
Если я через php попытаюсь вписать в файл на новую строку 344 то он должен не записывать 344 так как значение уже есть в файле!!
А если введу 777 то должно записаться!

Последний раз редактировалось DKENT; 09.02.2011 в 01:10.
DKENT вне форума Ответить с цитированием
Старый 09.02.2011, 10:06   #2
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

Код:
открываешь файл.
в цикле
   построчно читаешь файл
   сравниваешь со своей строкой. если нашел - прерываешь работу
конец цикла
дошли до конца - значит не прерывались - значит не нашли - дописать в файл свою строку
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 09.02.2011, 12:09   #3
DKENT
Форумчанин
 
Регистрация: 09.09.2010
Сообщений: 114
По умолчанию

Пробую вот так! Но текст добавляеться повторно
Цитата:
$fp = fopen("logs.log","a+");
while (!feof($fp)) {
$line = fgets($fp);

}

if ($line=="777")
{
fclose($fp);
}
else
{
fwrite($fp,"\n "777" <br> \n");
fclose($fp);
}
?>
DKENT вне форума Ответить с цитированием
Старый 09.02.2011, 12:30   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

в вашем случае проверяется только последняяя строка файла, и вообще непонятно что делается...

примерно так нада
PHP код:
$fp fopen("logs.log","a+");
$flag true;
while (!
feof($fp)) {
$line fgets($fp);
if (
$line=="777") {$flag=false;break 1;}
}
// Если не было 777 - то дописываем
if ($flag) {fwrite($fp,"\n "777" <br> \n");}
fclose($fp); 
ADSoft вне форума Ответить с цитированием
Старый 09.02.2011, 13:02   #5
DKENT
Форумчанин
 
Регистрация: 09.09.2010
Сообщений: 114
По умолчанию

Попробовал на примере вашего кода!!!
Текст добавляеться повторно!
DKENT вне форума Ответить с цитированием
Старый 09.02.2011, 13:12   #6
dekameron
Форумчанин
 
Аватар для dekameron
 
Регистрация: 27.04.2010
Сообщений: 185
По умолчанию

У меня так получилось:
PHP код:
$filename='file.txt';
$word='777';
$file=file($filename);
if(!
in_array($word,$file)){
    
$fp=fopen($filename,'a+');
    
fwrite($fp,"\r\n{$word}");
    
fclose($fp);
}; 
Помог - тырк на весы
dekameron вне форума Ответить с цитированием
Старый 09.02.2011, 14:01   #7
DKENT
Форумчанин
 
Регистрация: 09.09.2010
Сообщений: 114
По умолчанию

Данный код проверяет только 1 строку файла!!!
А мне нужно чтобы проверял весь файл!
Цитата:
$c="777";
$filename='logs.log';
$file=file($filename);
if(!in_array($c,$file)){
$fp=fopen($filename,'a+');
fwrite($fp,"\r\n{$c}<br>");
fclose($fp);
};
?>
DKENT вне форума Ответить с цитированием
Старый 09.02.2011, 15:09   #8
dekameron
Форумчанин
 
Аватар для dekameron
 
Регистрация: 27.04.2010
Сообщений: 185
По умолчанию

Цитата:
Сообщение от DKENT Посмотреть сообщение
Данный код проверяет только 1 строку файла!!!
А мне нужно чтобы проверял весь файл!
Это проверено? С чего вы взяли, что проверяется 1 строка?
Проверяются все строки.
Для подтвержения читаем file() , in_array()
Или имелось ввиду не точное совпадение строки, а включение искомого слова? Тогда:

PHP код:
$file='file.txt';
$word='555';
$ok=true;
$fp fopen($file,"a+");
while (!
feof($fp)) {
    
$line fgets($fp);
    if(
strpos($line,$word)!==false){$ok=false; break;};
}
if (
$ok){
    
fwrite($fp,"\r\n$word");
}
fclose($fp); 
Помог - тырк на весы
dekameron вне форума Ответить с цитированием
Старый 09.02.2011, 16:39   #9
MyXa
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 77
По умолчанию

короче так
PHP код:
<?
$str 
"333"//та строка которую записать нада
$list explode("\r\n",fread(fopen("text.txt","r"),filesize("text.txt"));
foreach(
$list as $value){
if(
$value == $str){ echo "Такая запись уже есть"; break;}else { fwrite(fopen("text.txt","a+"),"$str\r\n"); break; }
}
?>
вот как то так... (писал так без теста)
I have cheats!!!!
MyXa вне форума Ответить с цитированием
Старый 09.02.2011, 16:59   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от dekameron Посмотреть сообщение
Или имелось ввиду не точное совпадение строки, а включение искомого слова?
Там у вас в первом примере скорее всего была проблема в символах окончания строк:
Цитата:
Каждая строка в полученном массиве будет завершаться символами конца строки, поэтому, если вам будет нужно избавиться от этих символов, вы будете должны использовать функцию rtrim().
Т.е. вы сравнивали с поисковым шаблоном $word строку, в которой присутствовали ещё и символы окончания строки.
Поэтому точных совпадений нет.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка текста в Edit misher Общие вопросы Delphi 15 02.10.2010 13:17
Проверка части текста и присвоение значения lexref Microsoft Office Excel 5 16.09.2010 13:23
Проверка текста в webbrowser nenoob1 Работа с сетью в Delphi 3 07.08.2010 02:17
Проверка текста Babyshka Помощь студентам 3 11.03.2010 20:00
Проверка текста без учета регистра John_chek Общие вопросы Delphi 8 08.06.2007 08:50