Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Odwieczny problem łamania linii (fwrite) w pliku txt
Forum PHP.pl > Forum > Przedszkole
Victor152
Witajcie. Podczas zapisywania pliku txt za pomocą funkcji fopen, fwrite, fclose nie mogę wrzucić do niego łamania linii. Próbowałem przez \r\n, \n oraz \n\r i nic.

Efekt:
Cytat
==== 22:01 ==== .... ====\r\n== mc_gross => 2.00\r\n== protection_eligibility => Eligible\r\n== address_status => confirmed\r\n== payer_id => PQTXAWLAHL86A\r\n== tax => 0.00\r\n==== VERIFIED ====\r\n\r\n


Sam skrypt php jest następujący:
  1. <?php
  2. $this->fhandle = fopen($path.$date.'.log', 'a+');
  3.        flock($this->fhandle, LOCK_EX);
  4.        
  5.        //HOW IT WILL LOOKS
  6.        $log = '==== '.$time.' ==== '.$this->array['payer_email'].' ====\n';
  7.        
  8.        foreach ($this->array as $key => $value)
  9.        {
  10.            $log .= '== '.$key.' => '.$value.'\n';
  11.        }
  12.        
  13.        $log .= '==== '.trim($this->output).' ====\n\n';
  14.        
  15.        fwrite($this->fhandle, str_replace('\n', 'r\n', $log));
  16.        flock($fp, LOCK_UN);
  17.        fclose($this->fhandle);
  18. ?>


I co ja mam począć? tongue.gif
zimekk
zamiast uzywac w str_replace pojedynczych ' ', uzyj podwojnych " ",

  1. <?php
  2. fwrite($this->fhandle, str_replace("\n", "r\n", $log));
  3. ?>
vokiel
Aby \n był odczytany jako znak nowej linii musi być w cudzysłowie "\n" a nie w apostrofach '\n'
erix
I bez escape'owania backslashy, bo wtedy wyjdzie po prostu \n zamiast znaku nowej linii. tongue.gif

Nie ma sensu się męczyć, użyj stałej PHP_EOL, która oznacza właśnie znak nowej linii.
Victor152
Cytat(zimekk @ 5.08.2009, 20:15:44 ) *
zamiast uzywac w str_replace pojedynczych ' ', uzyj podwojnych " ",

  1. <?php
  2. fwrite($this->fhandle, str_replace(&#092;"\n\", \"r\n\", $log));
  3. ?>


Na prawdę dziwne, nie wiedziałem, że jest jakaś różnica biggrin.gif.

Cytat(vokiel @ 5.08.2009, 22:00:26 ) *
Aby \n był odczytany jako znak nowej linii musi być w cudzysłowie "\n" a nie w apostrofach '\n'


smile.gif

Cytat(erix @ 6.08.2009, 10:13:21 ) *
I bez escape'owania backslashy, bo wtedy wyjdzie po prostu \n zamiast znaku nowej linii. tongue.gif

Nie ma sensu się męczyć, użyj stałej PHP_EOL, która oznacza właśnie znak nowej linii.


Musi być espacowanie bo tak to by mi błąd *PARSE* wyrzuciło winksmiley.jpg

#Topic
LUKS działa. Dziękuję.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.