Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] \r\n
Forum PHP.pl > Forum > Przedszkole
calebos
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.
webdice
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.
mike
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
webdice
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.
mike
Miałem na myśli to, że zawsze trzeba było stosować cudzysłowy.
webdice
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
calebos
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. ?>
mike
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.
webdice
Masz racje winksmiley.jpg. Zwracam honor.
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.