Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » » Программирование
Философия, технологии, алгоритмы!

Ответ
 
Опции темы
Старый 19.12.2004, 15:31   #1   
Форумец
 
Сообщений: 37
Регистрация: 12.04.2004

Daria вне форума Не в сети
как в PHP сделать так, чтобы из одного файла можно было заменить/удалить строчку

Люди, помогите !
Скажите, пожалуйста, как в PHP сделать так, чтобы из одного файла можно было заменить/удалить строчку в другом файле.
Например, у меня есть два PHP файла, один называется test1.php, а
второй test2.php. Мне надо так, чтобы файл test1.php заменял или удалял одну строчку в файле test2.php.

Заранее благодарна Дарья.
  Ответить с цитированием
Старый 20.12.2004, 07:57   #2   
фотограф
 
Аватар для ilyaerin
 
Сообщений: 2,738
Регистрация: 20.10.2004

ilyaerin вне форума Не в сети
Есть много вариантов...
Например: Скриптом test1.php читаем весь файл test2.php, а потом его переписываем, но уже без ненужной строки....
  Ответить с цитированием
Старый 20.12.2004, 12:32   #3   
джиксеровод
 
Аватар для umka
 
Сообщений: 1,868
Регистрация: 25.11.2003

umka вне форума Не в сети
function el($from, $what, $to = null)
{
if(!($ad = file($from))) return FALSE;
if(is_array($what)) foreach($what as $key=>$val) $ad[$key] = $val;
else $ad[$what] = "";
$t = fopen($to?$to:$from, "w+");
fputs($t, implode("",$ad));
fclose($t);
return TRUE;
}

///
/// tests
///
el("test2.php", 1);
//было стало
//0 0
//1 2
//2 3
//3 4
//4

el("test2.php",array("-0-\n", "-1-\n"));
//было стало
//0 -0-
//1 -1-
//2 2
//3 3
//4 4

el("test2.php",array(1 => "-1-\n", 3 => "-3-\n"));
//было стало
//0 0
//1 -1-
//2 2
//3 -3-
//4 4

el("test2.php",array(2 => "-2-\n", "-3-\n"));
//было стало
//0 0
//1 1
//2 -2-
//3 -3-
//4 4

el("test2.php",array(2 => "", 4=>""));
//было стало
//0 0
//1 1
//2 3
//3
//4


Заранее идите в жопу, umka.
  Ответить с цитированием
Старый 20.12.2004, 21:29   #4   
Форумец
 
Аватар для yujanin
 
Сообщений: 1,581
Регистрация: 11.04.2003

yujanin вне форума Не в сети
Daria ты не уточнила, нужно ли тебе изменять сам файл, или же нужно изменять вывод на экран, не изменяя сам файл. исходя из того, что имя второго файла заканчивается на Php, я так понял что вариант всё-таки первый

вот тебе скрипт test1.php, который будет открывать файл test2.php, искать строку $s_match и заменять её на $s_replace

[php]
<?php
//строка для поиска:
$s_match = "blablabla";
//чем заменяем:
$s_replace = "yadayada";

//открываем файлы. tempfile - для временного переноса данных
$filename1 = "./test2.php";
$filename2 = "./tempfile.php";
$h1 = fopen($filename1, "r");
$h2 = fopen($filename2, "w");

//если файл h1 удалось открыть
if($h1) {
//пока не дошли до конца файла
while (!feof($h1)) {
// читаем файл по одной линии и сохраняем в буфере
$buffer = fgets($h1, 4096);
//проверяем буфер на наличие строки, которую ищем, и если нашли, заменяем:
$buffer = str_replace($s_match, $s_replace, $buffer);
//пишем буфер в tempfile, добавляем переход на новую строку вв конце каждой строки:
fwrite($h2, $buffer ."\n")

}
//закончили читать-писать, закрываем:
fclose($h1);
fclose($h2);

}

//удаляем первый файл
unlink($filename1);
//переименовываем второй:
rename($filename2, $filename1);

//вуаля
echo "усё у порядке, шеу";
die();
?>
[/php]
  Ответить с цитированием
Старый 21.12.2004, 01:08   #5   
фотограф
 
Аватар для ilyaerin
 
Сообщений: 2,738
Регистрация: 20.10.2004

ilyaerin вне форума Не в сети
yujanin Это немножко другая задача, но твой алгоритм далек от идеального... Почему бы просто не прочитать весь файл сразу в одну строчку, потом замнена и переписать файл?... ИМХО - гораздо быстрее, да и код меньше...
  Ответить с цитированием
Старый 21.12.2004, 01:29   #6   
Форумец
 
Аватар для yujanin
 
Сообщений: 1,581
Регистрация: 11.04.2003

yujanin вне форума Не в сети
loshadka я не претендую на идеального кодера, я сетевой администратор
  Ответить с цитированием
Старый 21.12.2004, 07:30   #7   
Форумец
 
Сообщений: 37
Регистрация: 12.04.2004

Daria вне форума Не в сети
Цитата:
Первоначальное сообщение от yujanin
Daria или же нужно изменять вывод на экран, не изменяя сам файл.[/php]
Как раз это мне и нужно!
  Ответить с цитированием
Старый 21.12.2004, 10:16   #8   
Форумец
 
Аватар для yujanin
 
Сообщений: 1,581
Регистрация: 11.04.2003

yujanin вне форума Не в сети
Цитата:
Первоначальное сообщение от Daria
Как раз это мне и нужно!
ну тады ещё легче

[php]
<?php

//строка для поиска:

$s_match = "blablabla";

//чем заменяем:

$s_replace = "yadayada";



//открываем файлы. tempfile - для временного переноса данных

$filename1 = "./test2.php";

$h1 = fopen($filename1, "r");



//если файл h1 удалось открыть

if($h1) {

//пока не дошли до конца файла

while (!feof($h1)) {

// читаем файл по одной линии и сохраняем в буфере

$buffer = fgets($h1, 4096);

//проверяем буфер на наличие строки, которую ищем, и если нашли, заменяем, и выводим на экран:
$buffer= str_replace($s_match, $s_replace, $buffer);
echo $buffer;



}

//закончили читать-писать, закрываем:

fclose($h1);



}

//вуаля

echo "<br>усё у порядке, шеу";

die();

?>

[/php]
  Ответить с цитированием
Старый 22.12.2004, 08:22   #9   
Форумец
 
Сообщений: 37
Регистрация: 12.04.2004

Daria вне форума Не в сети
yujanin, у меня ничего не получается, возможно я допустила ошибку, я новичок в этом деле. Пожалуйста, проверьте мой скрипт:

var $test.php;
var $h1;

<?
//строка для поиска
$s_match = "blablabla";
//строка для замены
$s_replace = "yadayada";

//открываем файлы. tempfile - для временного переноса данных
$test.php = "./test1.php";
$h1 = fopen($test.php, "r");

// если файл h1 удалось открыть
if($h1) {
// пока не дошли до конца файла
while (!feof($h1)) {
// читаем файл по одной линии и сохраняем в буфере
$buffer = fgets($h1, 4096);
// проверяем буфер на наличие строки, которую ищем, и если нашли, то заменяем
$buffer= str_replace($s_match, $s_replace, $buffer);
echo $buffer;

}
//закончили читать-писать, закрываем:
fclose($h1);
}

// сообщение на мониторе
echo "замена произведена!";
die();
?>

А когда я скрипт запускаю в браузере, то ошибка такая:
Parse error: parse error in z:\home\localhost\www\test.php on line 12
  Ответить с цитированием
Старый 22.12.2004, 09:19   #10   
джиксеровод
 
Аватар для umka
 
Сообщений: 1,868
Регистрация: 25.11.2003

umka вне форума Не в сети
я плакал...

p.s. помоему это какой-то форумец стибается
  Ответить с цитированием
Старый 22.12.2004, 10:17   #11   
няшечка
 
Аватар для mikе
 
Сообщений: 5,311
Регистрация: 13.06.2003

mikе вне форума Не в сети
Daria, а гиде тут строка №12?
  Ответить с цитированием
Старый 22.12.2004, 12:47   #12   
Форумец
 
Сообщений: 37
Регистрация: 12.04.2004

Daria вне форума Не в сети
Цитата:
Первоначальное сообщение от mike_s
Daria, а гиде тут строка №12?
Если считать пустые строки, то будет.
  Ответить с цитированием
Старый 22.12.2004, 13:25   #13   
няшечка
 
Аватар для mikе
 
Сообщений: 5,311
Регистрация: 13.06.2003

mikе вне форума Не в сети
Daria, выложи скриншот какого-нибудь UltraEdit'а с пронумерованными строками
  Ответить с цитированием
Старый 22.12.2004, 14:50   #14   
Форумец
 
Сообщений: 37
Регистрация: 12.04.2004

Daria вне форума Не в сети
Вот:

1.
2. $test1.php
3.
4. <?
5. //строка для поиска
6. $s_match = "blablabla";
7. //строка для замены
8. $s_replace = "yadayada";
9.
10. //открываем файлы. tempfile - для временного переноса данных
12. $filename1 = "./test1.php";
13. $h1 = fopen($test1.php, "r");
14.
15. // если файл h1 удалось открыть
16. if($h1) {
17. // пока не дошли до конца файла
18. while (!feof($h1)) {
19. // читаем файл по одной линии и сохраняем в буфере
20. $buffer = fgets($h1, 4096);
21. // проверяем буфер на наличие строки, которую ищем, и если нашли, то заменяем
22. $buffer= str_replace($s_match, $s_replace, $buffer);
23. echo $buffer;
24.
25. }
26. //закончили читать-писать, закрываем:
27. fclose($h1);
28. }
29.
30. // сообщение на мониторе
31. echo "замена произведена!";
32. die();
33. ?>
  Ответить с цитированием
Старый 23.12.2004, 10:41   #15   
фотограф
 
Аватар для ilyaerin
 
Сообщений: 2,738
Регистрация: 20.10.2004

ilyaerin вне форума Не в сети
Daria
Замени 12 и 13 строки на:
$h1 = fopen( "test1.php", "r"); + переложи файл test1.php в эту же папку, что и файл test.php

У тебя в имени переменной была точка - так нельзя...

Сходи на сайт http://phpfaq.ru/

мля....
[php]
<?php
//строка для поиска
$s_match = "blablabla";
//строка для замены
$s_replace = "yadayada";

// Открываем файл, text.txt, лежащий в этой же папке....
$str = file_get_contents( "text.txt" );
echo str_replace( $s_match, $s_replace, $str );
?>
[/php]
  Ответить с цитированием
Старый 23.12.2004, 15:10   #16   
Форумец
 
Сообщений: 37
Регистрация: 12.04.2004

Daria вне форума Не в сети
loshadka, я буквально повторила ваш скрипт:


<?php
//строка для поиска
$s_match = "blablabla";
//строка для замены
$s_replace = "yadayada";

// Открываем файл, test.php, лежащий в этой же папке....
$str = file_get_contents( "test.php" );
echo str_replace( $s_match, $s_replace, $str );
?>

Ошибки все пропали, но строчки скрипт всё равно не заменяет.
  Ответить с цитированием
Старый 23.12.2004, 16:40   #17   
фотограф
 
Аватар для ilyaerin
 
Сообщений: 2,738
Регистрация: 20.10.2004

ilyaerin вне форума Не в сети
Daria Логично, мы ведь только читаем информацию, а не записывам в файл....

Припиши еще функцию очищения файла и перезапиши его....
  Ответить с цитированием
Старый 23.12.2004, 20:25   #18   
Форумец
 
Аватар для yujanin
 
Сообщений: 1,581
Регистрация: 11.04.2003

yujanin вне форума Не в сети
loshadka так она сказала, ей файл сам исправлять не нужно, а нужно только вывод на экран изменять.
  Ответить с цитированием
Старый 24.12.2004, 06:08   #19   
Форумец
 
Сообщений: 37
Регистрация: 12.04.2004

Daria вне форума Не в сети
Цитата:
Первоначальное сообщение от yujanin
loshadka так она сказала, ей файл сам исправлять не нужно, а нужно только вывод на экран изменять.
Правильно.
  Ответить с цитированием
Старый 24.12.2004, 11:22   #20   
фотограф
 
Аватар для ilyaerin
 
Сообщений: 2,738
Регистрация: 20.10.2004

ilyaerin вне форума Не в сети
yujanin, Daria
Цитата:
quote:

Первоначальное сообщение от yujanin
loshadka так она сказала, ей файл сам исправлять не нужно, а нужно только вывод на экран изменять.
Так мой пример и изменяет только вывод на экран....
  Ответить с цитированием
Старый 24.12.2004, 14:17   #21   
Форумец
 
Сообщений: 37
Регистрация: 12.04.2004

Daria вне форума Не в сети
Большое спасибо, у меня всё получилось.
Но теперь, у меня другая проблема, мне надо написать скрипт,
который бы менял картинки, одну на другую.
Например, у сайта две версии, русская и английская и мне надо чтобы, если была бы выбрана русская версия, то загружалась одна картинка, а если английская, то другая.
Помогите, пожалуйста, я вас очень прошу.
  Ответить с цитированием
Старый 26.12.2004, 11:02   #22   
фотограф
 
Аватар для ilyaerin
 
Сообщений: 2,738
Регистрация: 20.10.2004

ilyaerin вне форума Не в сети
Daria
Используй
[php]
if( условие )
{
выражение 1
}
else
{
выражение 2
}
[/php]
А вообще - сходи на сайт phpclub.ru - там довольно много неплохих статей, написаны как раз для новичков, еще там очень хороший форум, токо прежде чем что-то спросить - используй поиск...
  Ответить с цитированием
Старый 28.12.2004, 09:44   #23   
Форумец
 
Сообщений: 37
Регистрация: 12.04.2004

Daria вне форума Не в сети
loshadka, спасибо большое!
  Ответить с цитированием
Старый 28.12.2004, 09:58   #24   
фотограф
 
Аватар для ilyaerin
 
Сообщений: 2,738
Регистрация: 20.10.2004

ilyaerin вне форума Не в сети
Daria Не за что, если что - пиши...
  Ответить с цитированием
Старый 29.12.2004, 14:15   #25   
Форумец
 
Сообщений: 37
Регистрация: 12.04.2004

Daria вне форума Не в сети
loshadka, извините, но у меня ещё одна проблема.
Я в книгах по PHP не могу найти, как изменить цвет текста в web-странице, сделанной в PHP.
Если вы знаете, то помогите, пожалуйста.
  Ответить с цитированием
Старый 29.12.2004, 19:32   #26   
джиксеровод
 
Аватар для umka
 
Сообщений: 1,868
Регистрация: 25.11.2003

umka вне форума Не в сети
Daria блондинка?
  Ответить с цитированием
Старый 29.12.2004, 23:43   #27   
няшечка
 
Аватар для mikе
 
Сообщений: 5,311
Регистрация: 13.06.2003

mikе вне форума Не в сети
Daria, поище в книге по Си. Там точно есть.
  Ответить с цитированием
Старый 30.12.2004, 12:55   #28   
фотограф
 
Аватар для ilyaerin
 
Сообщений: 2,738
Регистрация: 20.10.2004

ilyaerin вне форума Не в сети
Daria Пхп только создает страницу....
Все что выводится - это html, или xml, так, что цвет меняй html тегами, или css стилями... Сходи по ссылке, я давал, почитай про самые основы...
  Ответить с цитированием
Старый 30.12.2004, 13:25   #29   
Форумец
 
Сообщений: 5
Регистрация: 07.12.2004

mellow вне форума Не в сети
Daria,
))
  Ответить с цитированием
Старый 04.01.2005, 07:27   #30   
Форумец
 
Сообщений: 37
Регистрация: 12.04.2004

Daria вне форума Не в сети
ОГРОМНОЕ СПАСИБО!
  Ответить с цитированием
Поиск в теме: 


Опции темы

Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind