Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Замена строк в файле

Сообщения:  [1-10] 

 
 автор: Lastron   (02.07.2008 в 16:41)   письмо автору
 
   для: SiM(R)   (21.06.2008 в 13:40)
 

Спасибо за поддержку в данном вопросе.
Я поступил следующим образом:

<?
function OpenBaseList($string)
{
           $list = fopen( $string, "r" );

           while ( ! feof( $list ) )
           {
                       $line[] = fgets( $list, 1024 );
           }

           fclose( $list );

  return $line;
}

function upline($file,$ids,$url)
{


     $array = OpenBaseList($file);

     $line = ($ids-1);

     if(count($array) < $line or !is_numeric($line))
     {

            include "./inc/templates/" . $admin_config['templates'] . "/error_pages.tpl";

     }
     else
     {

         $id = ($line+1);

         $detali  = $array[$id-2];  // то что выше в списке
         $detali1 = $array[$id-1]; // то что есть




         foreach ($array as $key => $value)
         {

            if($key == ($id-1))
            {

               $value = $detali;

            }

            if($key == ($id-2))
            {
               $value = $detali1;
            }

            $upload_str[]= $value;

         }


         $string = implode("",$upload_str);

         $open = fopen($file,"w");
         fwrite($open,$string);
         fclose($open);



         print "<meta http-equiv=refresh content='0; url=$url'>";
     }
}


function downline($file,$ids,$url)
{

     $array = OpenBaseList($file);

     $line = ($ids-1);

     if(count($array) < $line or !is_numeric($line))
     {

            include "./inc/templates/" . $admin_config['templates'] . "/error_pages.tpl";

     }
     else
     {

         $id = ($line+1);

         $detali = $array[$id];  // следующее в списке
         $detali1 = $array[$id-1]; // то что есть




         foreach ($array as $key => $value)
         {

            if($key == ($id))
            {
               $value = $detali1;
            }

            if($key == ($id-1))
            {
               $value = $detali;
            }

            $upload_str[]= $value;

         }

         $string = implode("",$upload_str);

         $open = fopen($file,"w");
         fwrite($open,$string);
         fclose($open);



         print "<meta http-equiv=refresh content='0; url=$url'>";
     }
}

?>


и вызов функций


<?
$file = "./../files/gallery_cat.dat";
$ids = @$_GET['cat'];
$url = "?show=gallery&do=gallery_edit";
downline($file,$ids,$url);
?>

   
 
 автор: Trianon   (21.06.2008 в 15:46)   письмо автору
 
   для: SiM(R)   (21.06.2008 в 13:40)
 

Между прочим, строки национальных алфавитов в параметрах URI следует urlencod'ить.

   
 
 автор: BinLaden   (21.06.2008 в 13:42)   письмо автору
 
   для: SiM(R)   (21.06.2008 в 13:40)
 

> header("Location:$url?err=Ниже некуда!");

Согласен...:)

   
 
 автор: SiM(R)   (21.06.2008 в 13:40)   письмо автору
 
   для: gobseck   (20.06.2008 в 20:53)
 

Че то, как-то не очень получилось, но вот то, что насоображал...

<?php
$url=$_SERVER['PHP_SELF'];
$path='C:\AppServ\www\help\text.txt'; // место нахождения файла с строками
if ($_POST['hide'])                   //если запрос был отправлен, то обрабатываем его
{
    $file=file($path);           //открываем файл со страницами

    if ($_POST['move']=='up')                              //если перемещаем вверх
    {
            if ($_POST['name']==0)                           //если эта самая верхняя позиция, то прекращаем перемещать вверх
            {
                header("Location:$url?err=Выше некуда!");
                die();
            }

        $to_down=$file[$_POST['name']-1];
        $file[$_POST['name']-1]=$file[$_POST['name']];
        $file[$_POST['name']]=$to_down;
    }

    if ($_POST['move']=='down')                                       //если перемещаем вниз
    {
            if ($_POST['name']==count($file)-1)                    //если эта самая нижняя строка, то прекращаем ее опускать
            {
                header("Location:$url?err=Ниже некуда!");
                die();
            }
        $to_down=$file[$_POST['name']+1];
        $file[$_POST['name']+1]=$file[$_POST['name']];
        $file[$_POST['name']]=$to_down;
    }

    if (!$_POST['move'])
    {
        header("Location:$url?err=Не выбран путь перемещения");
        die();
    }

        if  (!isset($_POST['name']))
    {
        header("Location:$url?err=Не выбрана строка для перемещения");
        die();
    }

    foreach ($file as $str)
    {
        $upload_text.=$str;                               //формируем строку из полученных перемещений
    }


    $file=fopen($path,'w');                                //открываем этот же файл для перезаписи
    fwrite($file, $upload_text);
    fclose($file);
}
?>

<?php
$file=file($path);
    echo $id;

    echo '<html>'.$err."<form method='POST' action=$url>";
    echo '<select size="'.count($file).'" name="name">';                          //формируем селекты, в которых указаны все строки
$i=0;
foreach ($file as $str)
{
    echo '<option value="'.$i.'">'.$str.'</option>';
    $i++;
}
?>
    </select><br><br>
    <input name="move" type="radio" value="up">Вверх<br>
    <input name="move" type="radio" value="down">Вниз<br>
    <input type="hidden" name="hide" value=1>
    <input type="submit" value="Отправить">

</form>

   
 
 автор: gobseck   (20.06.2008 в 20:53)   письмо автору
 
   для: Lastron   (20.06.2008 в 18:35)
 

А можно задать похожий вопрос? Как определенную строчку в файле заменить на некоторую строку-переменную?
Это, получается, тоже надо грузить текст до этой строки, после, а затем спаять то, что не меняется, с тем, что я хочу записать, и вперед, на запись! Или можно как-то проще?

   
 
 автор: Trianon   (20.06.2008 в 20:11)   письмо автору
 
   для: Lastron   (20.06.2008 в 18:59)
 

Насколько велик файл?

   
 
 автор: Trianon   (20.06.2008 в 20:11)   письмо автору
 
   для: SiM(R)   (20.06.2008 в 18:55)
 

Проверяли код?
Советую проверить.

   
 
 автор: Lastron   (20.06.2008 в 18:59)   письмо автору
 
   для: SiM(R)   (20.06.2008 в 18:55)
 

Хотелось бы управлять расположением строчек, если надо поднять на одну вверх или на одну вниз опустить. Строчек может быть энное количество

   
 
 автор: SiM(R)   (20.06.2008 в 18:55)   письмо автору
 
   для: Lastron   (20.06.2008 в 18:35)
 

Если прям так, то можно следующим образом:

<?php
$file=file('text.txt');
foreach ($file as $str)
{
    $upload_str[]=$str;
}
$file=fopen('ready.txt','w');
$upload_text=$upload_str[0].'\n'.$upload_str[2].'\n'.$upload_str[1];
fwrite($file, $upload_text);
fclose($file);
?>


Если иначе, то скажите более подробно чего Вы хотите

   
 
 автор: Lastron   (20.06.2008 в 18:35)   письмо автору
 
 

Подскажите пожалуйста как строчку с текстового файла поднять на один уровень вверх
тоесть есть файл с содержимым

строка 1
строка 2
строка 3

как сделать чтоб получилось следующее:

строка 1
строка 3
строка 2

   

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime