1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

PHP как записать в нужную строку данные.

Тема в разделе "Web Coding", создана пользователем DRUG_ADDICT, 1 июн 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. DRUG_ADDICT

    DRUG_ADDICT Создатель

    Регистр.:
    9 янв 2007
    Сообщения:
    33
    Симпатии:
    12
    Люди вот такой у меня вопрос, помогите пожалуйста!

    Как записать в нужную строку данные. Объясняю... например есть есть текстовый файл:

    [начало]
    один
    два
    три
    четыре
    шесть
    семь
    восемь
    девять
    [конец]

    если посмотреть внимательней то в этом текстовом файле не хватает слова "пять" вот... наверно вы уже поняли мой вопрос но я углу***юсь...
    Надо с помощью PHP сделать запись в файле, слова "пять" на строчке 5... при этом не задеть такие слова как "четыре"..."шесть" чтобы между ними встало слово "пять" и выглядело это так:

    [начало]
    один
    два
    три
    четыре
    пять
    шесть
    семь
    восемь
    девять
    [конец]

    Можно ли это сделать средствами PHP ? Как, и если можно пример ?
    Заранее, СПАСИБО огромное !
     
  2. Nafania

    Nafania

    Регистр.:
    24 мар 2007
    Сообщения:
    167
    Симпатии:
    46
    сходу в голову пришло. правда для больших файлов долго будет - есть варианты, наверное, по проще.

    берете содержимое файла file_get_contents
    полученную строку собираете в массив через explode используя в качестве разделителя перенос строки.
    собираете новый массив где 4 ( ибо нумерацию идет с нуля - не забывайте об этом) элементом идет слово "пять".

    пишите все обратно в файл.
     
    DRUG_ADDICT нравится это.
  3. mixamixa

    mixamixa Постоялец

    Регистр.:
    9 янв 2007
    Сообщения:
    61
    Симпатии:
    13
    сходу вставляем 5 строчку "пять" с переводом строки и каретки
    Код:
    $array=file("1.txt"); //получим массив $arr где $arr[$i] $i ая строка
    $fp=fopen("1.txt","w");
    for($i=0;$i<4;$i++) fputs($fp,$arr[$i]);
    
    fputs($fp,"пять".chr(13).chr(10));
    
    for($i=4;$i<count($arr);$i++) fputs($fp,$arr[$i]);
    
    fclose($fp);
    
     
    DRUG_ADDICT нравится это.
  4. DRUG_ADDICT

    DRUG_ADDICT Создатель

    Регистр.:
    9 янв 2007
    Сообщения:
    33
    Симпатии:
    12
    А можно просто тупо указать (бес всяких масивов и определения содержимого в файле) чтобы слово "пять" вставить в пятую строчку или в десятую... при это не задеть остальные строчки?
     
  5. keatlon

    keatlon Прохожие

    "тупо" это одной встроенной функцией PHP? нет. Но можно написать свою

    PHP:

    function insertLine($filename$row$value)
    {
    $array=file($filename); //получим массив $arr где $arr[$i] $i ая строка

    if (count($array) < $row$row =  count($array);
    if (
    $row 1$row =  1;

    $fp=fopen($filename,"w");
    for(
    $i=0;$i < ($row-1); $i++) fputs($fp,$arr[$i]);

    fputs($fp$value chr(13) . chr(10));

    for(
    $i = ($row-1); $i<count($arr); $i++) fputs($fp,$arr[$i]);

    fclose($fp);
    }
    а дальше просто вызываешь

    PHP:

    insertLine
    ('myfile.txt'5'пять');
    insertLine('myfile.txt'25'двадцать пять');
    insertLine('myfile.txt'2'шесть'); // вставить слово "шесть" во вторую строчку

     
  6. freetorg

    freetorg Прохожие

    Или вот так

    function insertLine($file, $row, $value) {
    $arr = file($file);
    $f = fopen($file, 'w');
    fwrite($f, join('', array_merge(array_slice($arr, 0, $row), array($value."\n\r"), array_slice($arr, $row))));
    fclose($f);
    }
     
Статус темы:
Закрыта.