• 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

VPS Starter Arubacloud
0 głosów
321 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,710 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 191 wizyt
pytanie zadane 19 listopada 2019 w PHP przez gkacperek Nowicjusz (180 p.)
0 głosów
1 odpowiedź 133 wizyt
0 głosów
0 odpowiedzi 165 wizyt
pytanie zadane 12 grudnia 2015 w C i C++ przez Ehlert Ekspert (213,860 p.)

92,963 zapytań

141,928 odpowiedzi

321,161 komentarzy

62,297 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 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...