Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Tajemnicze znaki
Forum PHP.pl > Forum > Przedszkole
Dominator
Witam
Podczas przeglądania skryptów na githubie natknąłem się na takie coś:

  1. function mc_status($host,$port='25565') {
  2. $timeInit = microtime();
  3. // TODO: implement a way to store data (memcached or MySQL?) - please don't overload target server
  4. $fp = fsockopen($host,$port,$errno,$errstr,$timeout=10);
  5. if(!$fp) die($errstr.$errno);
  6. else {
  7. fputs($fp, "\xFE"); // xFE - get information about server
  8. $response = '';
  9.  
  10. while(!feof($fp)) $response .= fgets($fp);
  11. fclose($fp);
  12. $timeEnd = microtime();
  13.  
  14. $response = str_replace("\x00", "", $response); // remove NULL
  15.  
  16. //$response = explode("\xFF", $response); // xFF - data start (old version, prior to 1.0?)
  17. $response = explode("\xFF\x16", $response); // data start
  18.  
  19. $response = $response[1]; // chop off all before xFF (could be done with regex actually)
  20.  
  21. //echo(dechex(ord($response[0])));
  22. $response = explode("\xA7", $response); // xA7 - delimiter
  23.  
  24. $timeDiff = $timeEnd-$timeInit;
  25. $response[] = $timeDiff < 0 ? 0 : $timeDiff;
  26. }
  27. return $response;
  28. }


Może mi ktoś wytłumaczyć te linijki?

  1. $response = str_replace("\x00", "", $response); // remove NULL
  2. //$response = explode("\xFF", $response); // xFF - data start (old version, prior to 1.0?)
  3. $response = explode("\xFF\x16", $response); // data start
Kshyhoo
Czytaj.
Dominator
Przeczytałem i jakoś nadal tego nie rozumiem.
Szymas
Jest to zapis znaku z tablicy ASCII.
Crozin
W PHP brakuje normalnego typu byte/char, który pozwalałby na reprezentowanie pojedynczego bajtu dlatego też trzeba korzystać z tekstu do realizacji tego zadania. Składnia \xXX pozwala na utworzenie tekstu/bajtu o konkretnej wartości (stosowanie normalnych znaków z reguły jest niemożliwe, co w połączeniu z istnieniem wielu kodowań dla znaków właściwie uniemożliwia ich użycie).
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.