Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение строк в файле stristr() 
:(
    Опции темы
Alek74
Дата 11.4.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 23.3.2006

Репутация: нет
Всего: нет



Код

$num = 123456;

$fo = fopen ("num.dat", 'r');
$data = fread ($fo, filesize("num.dat"))

if (!stristr($data,$num)){

$file=fopen("num.dat",'a');

fputs($file,$num."\r\n");
}


Если после этого пытаемся записать в файл число 1234567, то оно записываеться, а вот если число 12345, то нет.
Как выйти из положения используя именно этот алгоритм?

Это сообщение отредактировал(а) Alek74 - 11.4.2006, 18:33
--------------------
---------------------------------- «Филисофия жизни ©»  ---------------------------------- 
PM MAIL   Вверх
wsr
Дата 11.4.2006, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: 1
Всего: 2



Ну во первых открытый файл сначала нужно закрыть!
Код

$num = "123456";
$fo = fopen ( "num.dat", "r" );
$data = fread ( $fo, filesize ( "num.dat" ) );
fclose ( $fo );
if ( !stristr ( $data, $num ) )
{
    $file = fopen ( "num.dat", "a" );
    fputs ( $file, $num ."\r\n" );
    fclose ( $file );
}


А во вторых ( если не находит строку, которая точно есть в файле ) то, это все примудрости stristr и работы с текстовой информацией полученной из файла.

ИМХО БД лучше в 100раз, хотя не буду отрицать, что работа с файлами тоже иногды нужна! smile)
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
Wolf1994
Дата 11.4.2006, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 7
Всего: 29



Строка "12345" является составляющей "1234567" - естественно она находится в ней и условие отрицающее это не выполняется. Выход - ограничивать аргумент символами разделения. То есть, так будет работать:
Код

$num = "|123456|";
$fo = fopen ( "num.dat", "r" );
$data = fread ( $fo, filesize ( "num.dat" ) );
fclose ( $fo );
if ( !stristr ( $data, $num ) )
{
    $file = fopen ( "num.dat", "a" );
    fputs ( $file, $num ."\r\n" );
    fclose ( $file );
}

- и для "|1234567|" и для "|12345|".
Добавлено @ 22:47
Или, просто, писать:
Код

if ( !stristr ( $data, $num."\r\n" ) )

а лучше:
Код

if ( !stristr ( $data, $num."\n" ) )
//...
fputs ( $file, $num ."\n" );

- всё таки под Юниксом используется "\n"...
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.