Большой Воронежский Форум
Страница 1 из 2
1 2 >
» Программирование>как в PHP сделать так, чтобы из одного файла можно было заменить/удалить строчку
Daria 15:31 19.12.2004
Люди, помогите !
Скажите, пожалуйста, как в PHP сделать так, чтобы из одного файла можно было заменить/удалить строчку в другом файле.
Например, у меня есть два PHP файла, один называется test1.php, а
второй test2.php. Мне надо так, чтобы файл test1.php заменял или удалял одну строчку в файле test2.php.

Заранее благодарна Дарья. [Ответ]
ilyaerin 07:57 20.12.2004
Есть много вариантов...
Например: Скриптом test1.php читаем весь файл test2.php, а потом его переписываем, но уже без ненужной строки.... [Ответ]
umka 12:32 20.12.2004
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. [Ответ]
yujanin 21:29 20.12.2004
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]
[Ответ]
ilyaerin 01:08 21.12.2004
yujanin Это немножко другая задача, но твой алгоритм далек от идеального... Почему бы просто не прочитать весь файл сразу в одну строчку, потом замнена и переписать файл?... ИМХО - гораздо быстрее, да и код меньше... [Ответ]
yujanin 01:29 21.12.2004
loshadka я не претендую на идеального кодера, я сетевой администратор [Ответ]
Daria 07:30 21.12.2004

Сообщение от :
Первоначальное сообщение от yujanin
Daria или же нужно изменять вывод на экран, не изменяя сам файл.[/php]

Как раз это мне и нужно! [Ответ]
yujanin 10:16 21.12.2004

Сообщение от :
Первоначальное сообщение от 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] [Ответ]
Daria 08:22 22.12.2004
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 [Ответ]
umka 09:19 22.12.2004
я плакал...

p.s. помоему это какой-то форумец стибается [Ответ]
mikе 10:17 22.12.2004
Daria, а гиде тут строка №12? [Ответ]
Daria 12:47 22.12.2004

Сообщение от :
Первоначальное сообщение от mike_s
Daria, а гиде тут строка №12?

Если считать пустые строки, то будет. [Ответ]
mikе 13:25 22.12.2004
Daria, выложи скриншот какого-нибудь UltraEdit'а с пронумерованными строками [Ответ]
Daria 14:50 22.12.2004
Вот:

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. ?> [Ответ]
ilyaerin 10:41 23.12.2004
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] [Ответ]
Daria 15:10 23.12.2004
loshadka, я буквально повторила ваш скрипт:


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

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

Ошибки все пропали, но строчки скрипт всё равно не заменяет. [Ответ]
ilyaerin 16:40 23.12.2004
Daria Логично, мы ведь только читаем информацию, а не записывам в файл....

Припиши еще функцию очищения файла и перезапиши его.... [Ответ]
yujanin 20:25 23.12.2004
loshadka так она сказала, ей файл сам исправлять не нужно, а нужно только вывод на экран изменять. [Ответ]
Daria 06:08 24.12.2004

Сообщение от :
Первоначальное сообщение от yujanin
loshadka так она сказала, ей файл сам исправлять не нужно, а нужно только вывод на экран изменять.

Правильно. [Ответ]
ilyaerin 11:22 24.12.2004
yujanin, Daria

Сообщение от :
quote:

Первоначальное сообщение от yujanin
loshadka так она сказала, ей файл сам исправлять не нужно, а нужно только вывод на экран изменять.

Так мой пример и изменяет только вывод на экран.... [Ответ]
Daria 14:17 24.12.2004
Большое спасибо, у меня всё получилось.
Но теперь, у меня другая проблема, мне надо написать скрипт,
который бы менял картинки, одну на другую.
Например, у сайта две версии, русская и английская и мне надо чтобы, если была бы выбрана русская версия, то загружалась одна картинка, а если английская, то другая.
Помогите, пожалуйста, я вас очень прошу. [Ответ]
ilyaerin 11:02 26.12.2004
Daria
Используй
[php]
if( условие )
{
выражение 1
}
else
{
выражение 2
}
[/php]
А вообще - сходи на сайт phpclub.ru - там довольно много неплохих статей, написаны как раз для новичков, еще там очень хороший форум, токо прежде чем что-то спросить - используй поиск... [Ответ]
Daria 09:44 28.12.2004
loshadka, спасибо большое! [Ответ]
ilyaerin 09:58 28.12.2004
Daria Не за что, если что - пиши... [Ответ]
Daria 14:15 29.12.2004
loshadka, извините, но у меня ещё одна проблема.
Я в книгах по PHP не могу найти, как изменить цвет текста в web-странице, сделанной в PHP.
Если вы знаете, то помогите, пожалуйста. [Ответ]
umka 19:32 29.12.2004
Daria блондинка? [Ответ]
mikе 23:43 29.12.2004
Daria, поище в книге по Си. Там точно есть. [Ответ]
ilyaerin 12:55 30.12.2004
Daria Пхп только создает страницу....
Все что выводится - это html, или xml, так, что цвет меняй html тегами, или css стилями... Сходи по ссылке, я давал, почитай про самые основы... [Ответ]
mellow 13:25 30.12.2004
Daria,
)) [Ответ]
Daria 07:27 04.01.2005
ОГРОМНОЕ СПАСИБО! [Ответ]
Страница 1 из 2
1 2 >
Вверх