есть файл тхт содержимое:
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, $content, LOCK_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 смотреть строку если есть, то ничего не делаем, если нет то добавляем, и без комментариев, не понятно как сделать
Спустя 8 часов, 30 минут, 39 секунд (6.07.2009 - 18:28) kirik написал(а):
Цитата (jodam @ 6.07.2009 - 01:57) |
нужно без id смотреть строку если есть, то ничего не делаем, если нет то добавляем |
Не понял. А как тогда искать нужную строку?
Цитата (jodam @ 6.07.2009 - 01:57) |
еще подробней расписали код для подробного изучения |
Куда уж подробнее?
Каждая строка с комментом, только с регулярками не описана. Так это не мне объяснять, а
ему