• 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

Object Storage Arubacloud
0 głosów
278 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,690 p.)
Sprawdź co siedzi w $files po str_replace i po file_get_contents.

Podobne pytania

0 głosów
3 odpowiedzi 140 wizyt
pytanie zadane 19 listopada 2019 w PHP przez gkacperek Nowicjusz (180 p.)
0 głosów
1 odpowiedź 115 wizyt
0 głosów
0 odpowiedzi 159 wizyt
pytanie zadane 12 grudnia 2015 w C i C++ przez Ehlert Ekspert (212,670 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...