Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] \r\n, znak karety
calebos
post 17.06.2008, 14:00:38
Post #1





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

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


Witam

Kod
  1. <?php
  2. $buffer = str_replace('r','r',$buffer);
  3. ?>


Kombinowalem tutaj juz z \\\ i \\ i chyba problem jest w odnajdywaniu tego znaku.

Celem jest usuniecie dodatkowego \ ktory pojawia mi sie w zrzucie oracle w txt ktorego linie koncza sie na \r\n.

W mysql uzywam load data infile i nie dajac lines terminated by \r\n to wciaga mi \r do ostatniej kolumny.
Znow jak dodam to chyba ten \\r powoduje jakis problem przy ladowaniu i sql ignoruje ten znak wciagajac dane z nastepnego rowa do poprzedniego.

Przyklad jak pojawia sie Hex ascii wlasnie tam gdzie jest ten \ na koncu pola : 4F 5C 0D 0A 33.
Go to the top of the page
+Quote Post
webdice
post 17.06.2008, 14:13:47
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Spróbuj tak:

  1. <?php
  2. $buffer = str_replace("r","r",$buffer);
  3. ?>


Z tego co pamiętam, w którejś wersji php był problem jeśli używało się cudzysłowów zamiast apostrofów.
Go to the top of the page
+Quote Post
mike
post 17.06.2008, 14:17:51
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(webdicepl @ 17.06.2008, 15:13:47 ) *
Z tego co pamiętam, w którejś wersji php był problem jeśli używało się cudzysłowów zamiast apostrofów.
Nie w którejś tylko w każdej :-)
i nie problem tylko tak po prostu jest. Znaki białe są odczytywane jeśli umieści się je w cudzysłowach. Zresztą wystarczyło przeczytać podstawy dokumentacji: http://pl2.php.net/string
Go to the top of the page
+Quote Post
webdice
post 17.06.2008, 14:33:01
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(mike @ 17.06.2008, 15:17:51 ) *
Nie w którejś tylko w każdej :-)
i nie problem tylko tak po prostu jest. Znaki białe są odczytywane jeśli umieści się je w cudzysłowach. Zresztą wystarczyło przeczytać podstawy dokumentacji: http://pl2.php.net/string


Mi działa bez problemu kod ~calebos. Mam PHP 5.2.6.
Go to the top of the page
+Quote Post
mike
post 17.06.2008, 14:34:09
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Miałem na myśli to, że zawsze trzeba było stosować cudzysłowy.
Go to the top of the page
+Quote Post
webdice
post 17.06.2008, 14:36:02
Post #6


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(mike @ 17.06.2008, 15:34:09 ) *
Miałem na myśli to, że zawsze trzeba było stosować cudzysłowy.


Napisałeś ze zawsze trzeba umieszczać białe znaki w cudzysłowach, a mi działa również z apostrofami.

  1. <?php
  2.  
  3. $buffer = 'cos r cos';
  4.  
  5. print str_replace('r','r',$buffer);
  6.  
  7. ?>


Wynik:

Kod
cos \r cos
Go to the top of the page
+Quote Post
calebos
post 17.06.2008, 14:37:16
Post #7





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

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


Dzieki za wskazowki zasugerowalem sie tym ze jest tam ten \ i myslalem ze da sie to potraktowac jako zwykly tekst.

Poprawne dziala z

  1. <?php
  2. $buffer = str_replace("r","r",$buffer);
  3. ?>
Go to the top of the page
+Quote Post
mike
post 17.06.2008, 14:44:36
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(webdicepl @ 17.06.2008, 15:36:02 ) *
Napisałeś ze zawsze trzeba umieszczać białe znaki w cudzysłowach, a mi działa również z apostrofami.
(...)
Kod
cos \r cos
Wybaczam Ci bo może masz chwilową zaćmę tongue.gif
To teraz zadaj sobie pytanie: Czy to co widzę w źródle to jest biały znak? No właśnie, ..., skoro go widzę, ... tongue.gif

Niuans jest taki że zamieniłeś zwykły ciąg znaków na inny ciąg znaków. A nie na białe znaki.
A teraz zrób tak:

  1. <?php
  2.  
  3. $tekst = "jakiś ciąg \n zawierający \n białe znaki";
  4. echo str_replace('\n', "\n", $tekst);
  5. echo str_replace('\n', '\n', $tekst);
  6.  
  7. ?>
i wyciągnij wnioski.
Go to the top of the page
+Quote Post
webdice
post 17.06.2008, 14:51:08
Post #9


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Masz racje winksmiley.jpg. Zwracam honor.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 18:24