[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: работа с файлами
jodam
есть файл тхт содержимое:
457::520092341
54425::2020082007
4235146::2920092329
....
....
И так, первая цифра это id, вторая.. это спец код.
Задача такая.
Поиск, id в файле, если id найден, то сверяем новый спец код, если он совпадает, то ничего не делаем, если нет, то записываем его в переменную, и заменяем на новый спец код. Если id не найден, то добавляем новую строчку с id и спец кодом.

Я попробовал реализовать так
PHP
$arr file('conf.txt');
foreach (
$arr as $item)
{
$k++;

if (
eregi('54425::'$item))
{
//print $item.'<br />';
$a=1;
    if (
eregi('54425::2020082007'$item))
    {
        
//print $item.'<br />';
        
$b=2;
    }
}

}
if(
$a!=1
{
echo 
"add string";

}
if((
$a==1) && ($b != 2)) 
{
echo 
"edit string";
}


условия срабатывают, но как произвести замену и добавление я не знаю, помогите пожалуйста.



Спустя 5 минут, 16 секунд (6.07.2009 - 02:18) jodam написал(а):
замену решил таким вот способом
PHP
echo "edit string";
$content file_get_contents('conf.txt');
// Осуществляем замену
$content str_replace('54425::2020082007''54425::222222'$content);
// Перезаписываем файл
file_put_contents('conf.txt',$content);


теперь осталось, решить добавление


Нет, проблема не решилась

Спустя 39 минут, 12 секунд (6.07.2009 - 02:57) jodam написал(а):
PHP
$arr file('conf.txt');
foreach (
$arr as $item)
{
$k++;

if (
eregi('54425:'$item))
{
print 
$item.'<br />';
$a=1;
$zamena $item;
    if (
eregi('54425::2020082001'$item))
    {
        echo 
$item.'<br />';
        
$b=2;
        
    }
}

}
if(
$a!=1
{
echo 
"add string";
$fp fopen("conf.txt","a");
fwrite($fp,"\nNEW_STRING");
fclose($fp);

}
if((
$a==1) && ($b != 2)) 
{
echo 
"edit string";
$content file_get_contents('conf.txt');
// Осуществляем замену
echo "<b>$zamena</b>";
$content str_replace($zamena''$content);
// Перезаписываем файл
file_put_contents('conf.txt',$content); 

$fp fopen("conf.txt","a");
fwrite($fp,"\nNEW_EDIT_STRING");
fclose($fp);
}


конечно... коряво.. можно править и править.. но мне оч быстро надо было его сделать решил вот так... =) просьба не судить строго, я только начинаю учить, с удовольствием посмотрю более профф. варианты, буду следить за темой.


 ! 

М
Оформляйте код, пожалуйста
kirik

Спустя 54 минуты, 49 секунд (6.07.2009 - 03:52) kirik написал(а):
Попробуй этот код (должен работать, не проверял):
PHP
$file 'conf.txt'// рабочий файл
$search_id 54425// id, который ищем
$new_key 2341253224// новый ключ

// читаем файл
$content file_get_contents($file);

// осуществляем замену
$content preg_replace('/^'.preg_quote($search_id'/').'::\d+$/m'$search_id.'::'.$new_key$content, -1$count);

if(
$count 0// если что-то заменили
{
    
file_put_contents($file$contentLOCK_EX); // перезаписываем файл
}
else 
// если ничего не заменили
{
    
file_put_contents($file$search_id.'::'.$new_key."\n"FILE_APPEND LOCK_EX); // добавляем новую строку
}

Спустя 6 часов, 5 минут, 33 секунды (6.07.2009 - 09:57) jodam написал(а):
Огромное спасибо! код работает, если бы вы еще подробней расписали код для подробного изучения, то было бы просто супер! НО И Так СПАСИБО!)

просто стала задача, немного проще сейчас, нужно без id смотреть строку если есть, то ничего не делаем, если нет то добавляем, и без комментариев, не понятно как сделать sad.gif

Спустя 8 часов, 30 минут, 39 секунд (6.07.2009 - 18:28) kirik написал(а):
Цитата (jodam @ 6.07.2009 - 01:57)
нужно без id смотреть строку если есть, то ничего не делаем, если нет то добавляем

Не понял. А как тогда искать нужную строку?

Цитата (jodam @ 6.07.2009 - 01:57)
еще подробней расписали код для подробного изучения

Куда уж подробнее? smile.gif Каждая строка с комментом, только с регулярками не описана. Так это не мне объяснять, а ему smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.