Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Редактирование файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: помогите с решением
Зверь
Отправлено: 30 Декабря, 2011 - 16:42:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 243
Дата рег-ции: Окт. 2011  


Помог: 7 раз(а)




Здравствуйте! С наступающим Улыбка

Помогите с реализацией вот такой штуки:

Есть некий файл, с примерно таким содержимым

CODE (htmlphp):
скопировать код в буфер обмена
  1. KEY1 = VALUE1
  2. KEY2 = VALUE2
  3. ...


Так вот, как найти по ключу значение и перезаписать его. То есть найти значение например KEY2 и поменять его на то, что придет через форму.

(Отредактировано автором: 31 Декабря, 2011 - 06:55:15)

 
 Top
Зверь
Отправлено: 30 Декабря, 2011 - 19:06:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 243
Дата рег-ции: Окт. 2011  


Помог: 7 раз(а)




Ну где же вы, гуру)

(Отредактировано автором: 30 Декабря, 2011 - 19:07:27)

 
 Top
OrmaJever
Отправлено: 30 Декабря, 2011 - 20:36:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




мм?
PHP:
скопировать код в буфер обмена
  1. $arr = file("filename.txt");
  2.  
  3. $i = 0;
  4. $newArr = array();
  5. while(list($key, $value) = explode(' = ', $arr[$i++])) $newArr[$key] = $value;
  6. unset($arr);
  7. $arr['KEY2'] = 'new value';

(Отредактировано автором: 30 Декабря, 2011 - 20:45:33)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
OrmaJever
Отправлено: 31 Декабря, 2011 - 00:09:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Вобще если значения уникальны можно не заморачиватся
PHP:
скопировать код в буфер обмена
  1. $filename = 'filename.txt';
  2. file_put_contents($filename, str_replace('VALUE2', 'new_value', file_get_contents($filename)));


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Зверь
Отправлено: 31 Декабря, 2011 - 06:04:34
Post Id



Частый гость


Покинул форум
Сообщений всего: 243
Дата рег-ции: Окт. 2011  


Помог: 7 раз(а)




OrmaJever пишет:
мм?
PHP:
скопировать код в буфер обмена
  1. $arr = file("filename.txt");
  2.  
  3. $i = 0;
  4. $newArr = array();
  5. while(list($key, $value) = explode(' = ', $arr[$i++])) $newArr[$key] = $value;
  6. unset($arr);
  7. $arr['KEY2'] = 'new value';

Мне нужно не запихнуть файл в массив и поменять значение уже у массива, а именно найти значение по уникальному ключу и поменять его напрямую в файле
OrmaJever пишет:
Вобще если значения уникальны можно не заморачиватся
PHP:
скопировать код в буфер обмена
  1. $filename = 'filename.txt';
  2. file_put_contents($filename, str_replace('VALUE2', 'new_value', file_get_contents($filename)));

Нет, значение может меняться на все что вздумается, а вот ключи уникальны

P/S Вот соорудил пример для более полного понимания того что я хочу реализовать _http://booklight.tk/

(Отредактировано автором: 31 Декабря, 2011 - 06:57:38)

 
 Top
Зверь
Отправлено: 31 Декабря, 2011 - 10:00:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 243
Дата рег-ции: Окт. 2011  


Помог: 7 раз(а)




Вот пришел к такому костылю

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. header("Content-type: text/html;charset=utf-8");
  3.         $data = parse_ini_file("config.cfg");
  4.                 foreach($data as $k=>$v){
  5.                         $txt .= "<tr>
  6.                                 <td>
  7.                                     <input type='text' value='{$k}' readonly>
  8.                                 </td>
  9.                                 <form method='post'>
  10.                                 <td>
  11.                                     <input name='{$k}' type='text' value='{$v}'>
  12.                                 </td>
  13.                                 <td>
  14.                                     <input type='submit' name='submit' value='Edit'>
  15.                                 </form>
  16.                                 </td>
  17.                         </tr>";
  18.                 }
  19.                 foreach($_POST as $k=>$v){
  20.                                 $data["$k"] = $v;
  21.                 }
  22.                 foreach($data as $k=>$v){
  23.                         $string .= "$k = $v\n";
  24.                 }
  25.                 echo '<pre>';
  26.                 echo $string;
  27.                 echo '</pre>';
  28.         if(isset($_POST['submit'])){
  29.                 file_put_contents("config.cfg",$string);
  30.                 header("Location:".$_SERVER['SCRIPT_NAME']);
  31.                 }
  32.         echo "<table border='0px'>{$txt}</table>";
  33. ?>

Содержимое файла config.cfg
CODE (htmlphp):
скопировать код в буфер обмена
  1. KEY1 = VALUE1
  2. KEY2 = VALUE2
  3. KEY3 = VALUE3
  4. KEY4 = VALUE4
  5. KEY5 = VALUE5

Два минуса
файл полностью перезаписывается, что не позволяет хранить в нем комментарии вида
; comment
И добавляется значение кнопки сабмита, в данном случае "submit = Edit"

Подскажите как исправить.

Пример работы _http://booklight.tk/

(Отредактировано автором: 31 Декабря, 2011 - 10:01:33)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB