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]   

> Без описания
Зверь
Отправлено: 01 Января, 2012 - 17:28:28
Post Id



Частый гость


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


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




Приветствую всех

Кто бы мог подсказать как найти конкретное слово в файле и изменить его, не трогая структуры всего файла. То есть поменяться должно только указанное слово, остальная часть файла должна быть неизменной.
Простой пример на sql того что нужно
UPDATE table SET value = 'new value' WHERE value = 'old value'
 
 Top
Саныч Модератор
Отправлено: 01 Января, 2012 - 17:30:02
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Если честно, ничего не понял... Вам нужно изменить слово в файле? Тогда при чем тут sql-запрос?


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Зверь
Отправлено: 01 Января, 2012 - 17:31:53
Post Id



Частый гость


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


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




Это пример того что надо сделать в файле)
С sql все просто, а вот на файлах разобраться не могу
 
 Top
Саныч Модератор
Отправлено: 01 Января, 2012 - 17:35:13
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




А с файлами все тоже самое.
Открыли фалй, зачитали его весь в строку, изменили нужное, записали обратно в файл и закрыли его. Все!


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Зверь
Отправлено: 01 Января, 2012 - 17:56:11
Post Id



Частый гость


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


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




Раз уж написанное мной в 1 посте немого не подходит мне самому, то скажу конкретно что я хочу сделать

Вся проблема в том, что искомое слово не уникально. Я уже писал с данной проблемой здесь http://php.su/forum/topic.php?fo...0&topic=4082
Так вот, нужно найти уникальный ключ, и изменить его значение.
Решение есть, но оно меня в корне не устраивает:
PHP:
скопировать код в буфер обмена
  1. $data = parse_ini_file("config.cfg");
  2.                 foreach($data as $k=>$v){
  3.                         $txt .= "<tr>
  4.                                <td>
  5.                                    <input type='text' value='{$k}' readonly>
  6.                                </td>
  7.                                <form method='post'>
  8.                                <td>
  9.                                    <input name='{$k}' type='text' value='{$v}'>
  10.                                </td>
  11.                                <td>
  12.                                    <input type='submit' name='submit' value='Edit'>
  13.                                </form>
  14.                                </td>
  15.                        </tr>";
  16.                 }
  17.                 foreach($_POST as $k=>$v){
  18.                                 if($k=='submit') continue;
  19.                                 $data["$k"] = $v;
  20.                 }
  21.                 foreach($data as $k=>$v){
  22.                         $string .= "$k = $v\n";
  23.                 }
  24.                 echo '<pre>';
  25.                 echo $string;
  26.                 echo '</pre>';
  27.         if(isset($_POST['submit'])){
  28.                 file_put_contents("config.cfg",$string);
  29.                 header("Location:".$_SERVER['SCRIPT_NAME']);
  30.                 }
  31.         echo "<table border='0px'>{$txt}</table>";

т.к. код явно не код А?! а говнокод
и он не изменяет конкретную часть файла, а перезаписывает его полностью, оставляя только то, что приходит из формы, а мне также нужны комментарии оставленные в файле, которые после первого же редактирования удаляются.

В двух словах что я делаю:
Есть файл конфигурации и мне нужно реализовать его редактирование через веб интерфейс. Мне кажется такое явно делал не я один и может где-то есть готовое решение?
 
 Top
данила
Отправлено: 20 Января, 2012 - 14:20:45
Post Id



Забанен


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


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

[+][+]


эх ты) щас я тебе скину скрипток)
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $key = $_POST["key"];
  4. $new_key = $_POST["new_key"];
  5. $file = "  /* имя файла где и что заменить!  /*";
  6.  
  7. $files = file($file);
  8. foreach ($files as $key=>$value)
  9. {
  10. $files[$key]=str_replace($key, $new_key, $value);
  11. }
  12.  
  13. $f = fopen($file,"w+");
  14. foreach ($files as $keys=>$values)
  15. {
  16. fwrite($f,$values);
  17. }
  18. fclose($f);
  19. ?>
  20.  


вод так вот! учи манул...
 
 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