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]   

> Описание: требуется пример с объяснением;
Ley4ik_Russia
Отправлено: 13 Марта, 2011 - 15:53:51
Post Id



Гость


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


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




Перед мной стоит задача редактировать файл с помощью формы, она, форма, требует от пользователя ввести допустим свой IP адрес, а при нажатии на кнопку, должно проверяться существует ли такая строка в файле, если сущетвует, то заменить ее, при этом не известно где именно в файле нужная строка находится. Например, листинг редактируемого файла, под названием 2.txt:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. [data]
  3. floppyless = "1"
  4. msdosinitiated = "1"
  5. ; Needed for second stage
  6. OriSrc = "\\192.168.0.2\netboot\WINXPSP3\INSTALL\I386"
  7. OriTyp = "4"
  8. LocalSourceOnCD = 1
  9. DisableAdminAccountOnDomainJoin = 1
  10.  
  11. [SetupData]
  12. OsLoadOptions = "/fastdetect"
  13. ; Needed for first stage
  14. SetupSourceDevice = "\Device\LanmanRedirector\192.168.0.2\netboot\WINXPSP3\install"
  15.  
  16. [RemoteInstall]
  17. ; Avoid automatic format/repartition
  18. Repartition = No
  19. UseWholeDisk = No
  20.  
  21. [UserData]
  22. ComputerName = *
  23. ProductID=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
  24.  

В нем есть 2 подстроки со значением ip адреса, который нужно заменить на введенный пользователем.пока что пользуюсь кодом:
PHP:
скопировать код в буфер обмена
  1.  
  2. $ip = c("edit2")->text;
  3. $str1 = 'OriSrc = "\\\192.168.0.2\netboot\WINXPSP3\INSTALL\I386"';
  4. $var1 = substr_replace($str1, $ip, -42, -31);
  5. $data1 = $var1 . "\r\n";
  6. $file = '2.txt';
  7. $array1 = file( $file );
  8. $array1[4]=$data1;
  9. file_put_contents( $file, $array1 );
  10. $str2 = 'SetupSourceDevice = "\Device\LanmanRedirector\192.168.0.2\netboot\WINXPSP3\install"';
  11. $var2 = substr_replace($str2, $ip, -37, -26);
  12. $data2= $var2 . "\r\n";
  13. $array2 = file( $file );
  14. $array2[12]=$data2;
  15. file_put_contents( $file, $array2 );
  16.  

Тут недостаток в том что строка заменяется по ее номеру, но как указывалось выше, заранее номер строки неизвестен.

Спасибо за уделенное внимание моей проблеме!


-----
Ubuntu Server 12.04.2 LTS, Apache2, PHP5, MySQL5
 
 Top
ALEN
Отправлено: 13 Марта, 2011 - 16:48:04
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




parse_ini_file чем не в помощь?
 
 Top
Ley4ik_Russia
Отправлено: 13 Марта, 2011 - 16:53:49
Post Id



Гость


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


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




ALEN пишет:
parse_ini_file чем не в помощь?


Проблема в том что файл имеет расширение *.txt а не *.ini (((
Может конечно я чего то не понимаю?)))


-----
Ubuntu Server 12.04.2 LTS, Apache2, PHP5, MySQL5
 
 Top
ALEN
Отправлено: 13 Марта, 2011 - 16:58:13
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


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




Ley4ik_Russia
1) Формат файла, а не то, что к нему дописано важно!!
2)
а) читаешь файл - заносишь в массив
б) Нужные строки обрабатываешь с помощью str_replace
в) Записываешь все в файл
 
 Top
Ley4ik_Russia
Отправлено: 13 Марта, 2011 - 17:11:18
Post Id



Гость


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


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




ALEN пишет:
Ley4ik_Russia
1) Формат файла, а не то, что к нему дописано важно!!
2)
а) читаешь файл - заносишь в массив
б) Нужные строки обрабатываешь с помощью str_replace
в) Записываешь все в файл


Спасибо Подмигивание счас попробую))


-----
Ubuntu Server 12.04.2 LTS, Apache2, PHP5, MySQL5
 
 Top
Champion Супермодератор
Отправлено: 13 Марта, 2011 - 19:47:31
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Если именно ip заменить, то можно и так:
file_put_contents('2.txt', preg_replace('/(?:\d+\.){3}\d+/', $new_ip, file_get_contents('2.txt')));
 
 Top
JustUserR
Отправлено: 14 Марта, 2011 - 13:43:00
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




Ley4ik_Russia пишет:
Тут недостаток в том что строка заменяется по ее номеру, но как указывалось выше, заранее номер строки неизвестен.
В качестве возможного варианта решения предполагаемой задачи, заключающеся в осуществении анализа, модификации и извлечения элементов из информационных полей в текстовой базе данных, допустимо использование унифицированного решения, основанного на обеспечении поседовательного анализа входящих строк и провединии копирования их модифицированных инстанций


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Ley4ik_Russia
Отправлено: 15 Марта, 2011 - 06:32:47
Post Id



Гость


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


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




Всем спасибо я написал вот такой код:
PHP:
скопировать код в буфер обмена
  1.  
  2. $result = c("edit2")->text;
  3. if ("" != $result>0)
  4. {
  5. $ipadr = str_replace("%ip%", $result, "\\\%ip%\\netboot\WINXPSP3\INSTALL\I386");
  6. $ipadr1 = str_replace("%ip%", $result, "\Device\LanmanRedirector\\%ip%\\netboot\WINXPSP3\install");
  7. ini::open("xp001.sif");
  8. ini::write("data", "OriSrc", $ipadr);
  9. ini::write("SetupData", "SetupSourceDevice", $ipadr1);
  10. MessageBox("Готово!", "Netboot");
  11. } else {
  12. MessageBox("Введите IP адрес", "Netboot");
  13. }
  14.  

Пока что устраивает, но не все))


-----
Ubuntu Server 12.04.2 LTS, Apache2, PHP5, MySQL5
 
 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