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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Замена строк в файле
 
 автор: Lastron   (20.06.2008 в 18:35)   письмо автору
 
 

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

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

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

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

   
 
 автор: 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:59)   письмо автору
 
   для: SiM(R)   (20.06.2008 в 18:55)
 

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

   
 
 автор: 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)
 

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

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

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

   
 
 автор: 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>

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

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

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

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

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

   
 
 автор: 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$list1024 );
           }

           
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);
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования