Как перезаписать строку в php файле?

Тема в разделе "Как сделать...", создана пользователем Sankaboy, 7 авг 2012.

  1. Sankaboy

    Sankaboy Постоялец

    Регистр.:
    1 фев 2012
    Сообщения:
    112
    Симпатии:
    3
    Привет! Подскажите как перезаписать к примеру строку №3 (считая с нуля) в php-файле. Гуглил, были не которые примеры, но они почему-то не работают.
    Или может проще создать файл с нужным текстом, чем перезаписать? Только этого я вовсе в гугле не нашел.:(
     
  2. potehi

    potehi Создатель

    Регистр.:
    9 авг 2008
    Сообщения:
    32
    Симпатии:
    22
    PHP:
    <?php
     
    $filename 
    'file.txt';
    $contents file_get_contents($filename);
     
    if (
    $contents) {
        
    $contents explode("\n"$contents);
       
        if (isset(
    $contents[3])) {
            
    $contents[3] = 'Перезаписанная строка';
           
            if (
    is_writable($filename)) {
                if (!
    $handle fopen($filename'w')) {
                    echo 
    "Не могу открыть файл ($filename)";
                    exit;
                }
                       
                if (
    fwrite($handleimplode("\n"$contents)) === FALSE) {
                    echo 
    "Не могу произвести запись в файл ($filename)";
                    exit;
                }
               
                
    fclose($handle);
               
               
            } else {
                echo 
    "Файл недоступен для записи";
                exit;
            }
        } else {
            echo 
    "Строка не найдена";
            exit;
        }
     
    } else {
        echo 
    "Файл пуст";
        exit;
    }
    Можно вот так вот...
     
    Sankaboy нравится это.
  3. Viodele

    Viodele Механик

    Administrator
    Регистр.:
    17 дек 2011
    Сообщения:
    110
    Симпатии:
    479
    PHP файлы для компилятора являются исполнительными файлами. При попытке открыть такой файл в большинстве случаев Вы получите не тело файла, а результат выполнения скрипта. Соответственно, лучше хранить файл, который регулярно нужно перезаписывать, под другим расширением(как резервную копию), и уже на основании этого файла генерировать нужное содержание. Есть и другой вариант, который заключается в кучах настроек сервера и прав доступа к папкам. Но при выполнении тривиальных задач второй вариант себя не оправдывает.

    P.S. Еще этот вопрос можно решить, если есть возможность выполнять в PHP скрипте команды системы(командной строки). Но это опять же сводится к настройкам сервера.
     
    Sankaboy нравится это.
  4. potehi

    potehi Создатель

    Регистр.:
    9 авг 2008
    Сообщения:
    32
    Симпатии:
    22
    Viodele, php-файл - это текстовый файл, с ним можно работать как с любым текстовым файлом, я в примере указал file.txt, но можно аналогично file.php редактировать, в имени файла разницы нет.
     
    Sankaboy нравится это.
  5. Sankaboy

    Sankaboy Постоялец

    Регистр.:
    1 фев 2012
    Сообщения:
    112
    Симпатии:
    3
    Спасибо! php файл перезаписало. Правда не знаю как такое редактирование повлияет на дальнейшую работу php файла.
     
  6. Viodele

    Viodele Механик

    Administrator
    Регистр.:
    17 дек 2011
    Сообщения:
    110
    Симпатии:
    479
    Если перезаписано без ошибок, то работать должно нормально. Могут только возникнуть проблемы с chmod и chown. Но это тоже все можно настроить в скрипте. А если есть возможность использовать system, exec и passthru, так это вообще хорошо.
     
  7. Sankaboy

    Sankaboy Постоялец

    Регистр.:
    1 фев 2012
    Сообщения:
    112
    Симпатии:
    3
    Где можно ошибки посмотреть? Кодировка осталась прежняя. Файл запускается.
     
  8. Viodele

    Viodele Механик

    Administrator
    Регистр.:
    17 дек 2011
    Сообщения:
    110
    Симпатии:
    479
    Если запускается, значит ошибки отсутствуют.