Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Odwieczny problem łamania linii (fwrite) w pliku txt
Victor152
post
Post #1





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 26.02.2008

Ostrzeżenie: (0%)
-----


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ąć? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
zimekk
post
Post #2





Grupa: Zarejestrowani
Postów: 70
Pomógł: 2
Dołączył: 25.11.2008

Ostrzeżenie: (0%)
-----


zamiast uzywac w str_replace pojedynczych ' ', uzyj podwojnych " ",

  1. <?php
  2. fwrite($this->fhandle, str_replace("\n", "r\n", $log));
  3. ?>
Go to the top of the page
+Quote Post
vokiel
post
Post #3





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Aby \n był odczytany jako znak nowej linii musi być w cudzysłowie "\n" a nie w apostrofach '\n'
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




I bez escape'owania backslashy, bo wtedy wyjdzie po prostu \n zamiast znaku nowej linii. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Nie ma sensu się męczyć, użyj stałej PHP_EOL, która oznacza właśnie znak nowej linii.
Go to the top of the page
+Quote Post
Victor152
post
Post #5





Grupa: Zarejestrowani
Postów: 105
Pomógł: 3
Dołączył: 26.02.2008

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/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'


(IMG:http://forum.php.pl/style_emoticons/default/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. (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

#Topic
LUKS działa. Dziękuję.

Ten post edytował Victor152 6.08.2009, 10:37:03
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 15:42