• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP źle działająca funkcja explode

Aruba Cloud - Virtual Private Server VPS
0 głosów
363 wizyt
pytanie zadane 9 maja 2018 w PHP przez Browarnik123 Użytkownik (830 p.)

Hej !

Wyjaśni mi ktoś dlaczego wynikiem funkcji : 

$files = file_get_contents("vvvfiles.txt");
$files = str_replace( "vvvfiles.txt", '', $files );
$files=explode(' ',$files) ;
print_r($files) ;

jest : 

Array ( [0] => serverlog.txt serverlog2.txt ) 

Gdy $files =  serverlog.txt serverlog2.txt

Przecież ta tablica powinna mieć dwie komórki bo wyrazy rozdzielone są spacją . Wie ktoś o co chodzi ?

2 odpowiedzi

+1 głos
odpowiedź 9 maja 2018 przez Chess Szeryf (76,730 p.)
edycja 9 maja 2018 przez Chess
 
Najlepsza
$files=explode("\n",$files);

To ' ' musisz zmienić na "\n", ponieważ masz tekst w pliku w nowej linii, a nie w jednej linii po spacji.

Edit:

To jest zasadnicza różnica między tym:

serverlog.txt
serverlog2.txt

, a tym:

serverlog.txt serverlog2.txt

. W ramach ciekawostki. Dlaczego "\n" musi być w cudzysłowiu doczytasz w tym poradniku oraz na wikipedii.

http://www.asciitable.com/

Gdy już spojrzysz na tabelę ASCII to zobaczysz, że "koniec linii" (Line Feed) ma takie kodowanie:

Przepraszam za tę pustą tabelę poniżej, ale nie wiem jak ją usunąć.

 

 

   
         

 

Dec Hex Oct Bin Char Description
10 0A 012 1010 LF (NL line feed, new line)

Teraz więc znając poszczególne kodowanie w systemach liczbowych możesz napisać tak jak w przykładach poniżej:

$files=explode(chr(10),$files);
$files=explode(hex2bin("0A"),$files);
$files=explode(chr(octdec("012")),$files);
$files=explode(chr((int)bindec("1010")),$files);

Pamiętaj, że jak dasz nieparzystą ilość znaków do funkcji hex2bin, e.g. hex2bin("A"), to wyrzuci taki błąd:

Warning: hex2bin(): Hexadecimal input string must have an even length in ...

Musi, więc być tak: hex2bin("0A"), mimo iż samo "A" jest poprawnym formatem kodowania w Hex, bo:

A=10 i 0A=10 .

Sprawdzanie znaków sterujących:

http://php.net/manual/en/function.ctype-cntrl.php

Inne:

http://php.net/manual/en/function.nl2br.php

komentarz 9 maja 2018 przez Browarnik123 Użytkownik (830 p.)
Dziękuje!!
+1 głos
odpowiedź 9 maja 2018 przez Marchiew Dyskutant (7,730 p.)
Sprawdź co siedzi w $files po str_replace i po file_get_contents.

Podobne pytania

0 głosów
3 odpowiedzi 278 wizyt
pytanie zadane 19 listopada 2019 w PHP przez gkacperek Nowicjusz (180 p.)
0 głosów
1 odpowiedź 179 wizyt
0 głosów
0 odpowiedzi 178 wizyt
pytanie zadane 12 grudnia 2015 w C i C++ przez Ehlert Ekspert (214,940 p.)

93,329 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,663 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...