1

Тема: Як записати рядок у файл?

тиждень тому познайомився з php, то ж питання новачка , мабуть , давно рішене.
але я щось  не зміг знайти це рішення.

$filename="file_for_write.txt";
$line="hello, world!"."\n";       
fwrite($filename,$line);

так от, в файлі буде тільки "hello"
все що  після коми обрізається :(

як це обійти?

2

Re: Як записати рядок у файл?

Спочатку потрібно відкрити файл:
$f = fopen($filename, 'w');
Ця фунція поверне ресурс $f, який потрібно передавати в fwrite.

Приклад:

$f = fopen("file.txt", "w");
$line = "hello, world!";
fwrite($f, $line);
fclose($f);

3

Re: Як записати рядок у файл?

для одинарного запису, ріал щіт посани юзають
file_put_contents
http://php.net/manual/en/function.file-put-contents.php

Подякували: Voron1

4

Re: Як записати рядок у файл?

Replace написав:

Спочатку потрібно відкрити файл:
$f = fopen($filename, 'w');
Ця фунція поверне ресурс $f, який потрібно передавати в fwrite.

Приклад:

$f = fopen("file.txt", "w");
$line = "hello, world!";
fwrite($f, $line);
fclose($f);

перепрошую,помилився, коли скорочував для форуму текст.
звісно - файл відкритий.
ось без скорочень:
<?php
//    session_start();
    $pagename='photo';
    $imgfilename=$_POST['imgfilename'];       
//    header("Location: index.php?pagename=$pagename");   
    header("Location: photo.php");
    $photo=file('data/photo.db');
    $pagefile=fopen('data/photo.db',"wb");
    foreach ($photo as $line_num=>$currentline){
        $editline=explode(',', $currentline);
        if ($editline[0]==$imgfilename) {
            $photo[$line_num]=$imgfilename.','.trim( str_replace(chr(13).chr(10), '<br/>', $_POST['textarea']))."\n";       
        }
        fwrite($pagefile, $photo[$line_num]);
    }
    fclose($pagefile);
?>

так от , якщо в $_POST['textarea'] є кома - то після неї обрізає все решта :(

2 miroslav.chandler

для одинарного запису, ріал щіт посани юзають

а хто сказав, що запис одинарний?

5

Re: Як записати рядок у файл?

ping написав:
Replace написав:

Спочатку потрібно відкрити файл:
$f = fopen($filename, 'w');
Ця фунція поверне ресурс $f, який потрібно передавати в fwrite.

Приклад:

$f = fopen("file.txt", "w");
$line = "hello, world!";
fwrite($f, $line);
fclose($f);

перепрошую,помилився, коли скорочував для форуму текст.
звісно - файл відкритий.
ось без скорочень:
<?php
//    session_start();
    $pagename='photo';
    $imgfilename=$_POST['imgfilename'];       
//    header("Location: index.php?pagename=$pagename");   
    header("Location: photo.php");
    $photo=file('data/photo.db');
    $pagefile=fopen('data/photo.db',"wb");
    foreach ($photo as $line_num=>$currentline){
        $editline=explode(',', $currentline);
        if ($editline[0]==$imgfilename) {
            $photo[$line_num]=$imgfilename.','.trim( str_replace(chr(13).chr(10), '<br/>', $_POST['textarea']))."\n";       
        }
        fwrite($pagefile, $photo[$line_num]);
    }
    fclose($pagefile);
?>

так от , якщо в $_POST['textarea'] є кома - то після неї обрізає все решта :(

2 miroslav.chandler

для одинарного запису, ріал щіт посани юзають

а хто сказав, що запис одинарний?

да шось так з контексту подумав)
виведи строку на екран, може шось не то ліпить, мб якийсь спец символ(нул байт, там..) проржени через addslashes(), якшо збережеться, будеж знати куда копати

6

Re: Як записати рядок у файл?

шо ти таке пишеш?)

7

Re: Як записати рядок у файл?

Ось тут десь помилка зарита, не зовсім зрозуміла логіка:

      $editline=explode(',', $currentline);
        if ($editline[0]==$imgfilename) {
            $photo[$line_num]=$imgfilename.','.trim( str_replace(chr(13).chr(10), '<br/>', $_POST['textarea']))."\n";        
        }
        fwrite($pagefile, $photo[$line_num]);

Навіщо там explode? Він походу все і рубає.

8

Re: Як записати рядок у файл?

miroslav.chandler написав:

виведи строку на екран, може шось не то ліпить, мб якийсь спец символ(нул байт, там..) проржени через addslashes(), якшо збережеться, будеж знати куда копати

дякую, попробую...
просто вже годину ганяю, а воно не ловиться :(


miroslav.chandler написав:

шо ти таке пишеш?)

php вчу. а щоб скучно теорію не зубрити - пишу сайтик для своєї кицьки :)
lusi.webhor.com
можеш там вживу спробувати поредагувати якийсь напис в розділі фото - якщо в описі буде кома - буде цей ефект .

9

Re: Як записати рядок у файл?

шлях зовсім не правильний.
http://rutracker.org/forum/viewtopic.php?t=2055655
жалію, що в свій час, не найшов цьої книжки

Подякували: Replace1

10

Re: Як записати рядок у файл?

Replace написав:

Ось тут десь помилка зарита, не зовсім зрозуміла логіка:

      $editline=explode(',', $currentline);
        if ($editline[0]==$imgfilename) {
            $photo[$line_num]=$imgfilename.','.trim( str_replace(chr(13).chr(10), '<br/>', $_POST['textarea']))."\n";        
        }
        fwrite($pagefile, $photo[$line_num]);

Навіщо там explode? Він походу все і рубає.

в даний скрип передаються методом POST два значення:
$_POST['imgfilename'] - ім’я картинки, опис якої відредаговано і треба записати
$_POST['textarea'] - сам опис

є текстовий файл ('data/photo.db') в форматі - один рядок - один запис:  два поля(розділені комою)
перше поле - ім’я файла з картинкою, друге поле - тект опису цієї картинки.
починаємо перебирати файл по рядках.
почергово explode присвоює масиву $editline ці поля. відповідно  $editline[0] - ім’я файлу з картинкою

як тільки  $editline[0] співпаде з переданим $imgfilename=$_POST['imgfilename'];   , то слід замінити опис (при цьому в самому описі міняються CR/CL на <br/>)
так що explode нічого не рубає.
поставив і уважно  протрасив в eclipse - $_POST['textarea'] - має повне,не обрубане значення - з комами.
$photo[$line_num]  теж не  обрубане!
додаю скріншот з debug:
http://lusi.webhor.com/data/images/fwrite.png
редагував останній , 6-ий елемент масиву
видно, що $photo[5] має текс доданий до коми і після коми.
тисну крок далі - на моніторі текст БЕЗ доданого після коми :(

виходить - обрізає fwrite() ?
НІ!!!
я просто БАРАН! файл записаний вірно, але в скрипті виводу на екран теж використана explode з розділовою комою!!!
і вона  просто те, що після коми - присвоює елементу масиву, який на екран не виводиться!!!
найпростішим рішенням є замінити кому для розділу полів у файлі на щось хитріше - наприклад на   #separator#
УРА, все працює!!!

шлях зовсім не правильний.
http://rutracker.org/forum/viewtopic.php?t=2055655
жалію, що в свій час, не найшов цьої книжки

дякую, закачав.
початок дещо застарів - ну нема вже інету через модеми , Netscape browse давно помер, але туди ж пр’ямує і тогочасний переможець - IE.
але то деталі, сподіваюся що принципи розробки там дано добре .

11

Re: Як записати рядок у файл?

для початку саме то. шось більш сучасного та написано так само добре, не зустрічав.