PHP Conference Japan 2024

zlib_decode

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

zlib_decode解壓縮任何 raw/gzip/zlib 編碼的資料

說明

zlib_decode(字串 $data, 整數 $max_length = 0): 字串|false

解壓縮任何 raw/gzip/zlib 編碼的資料。

警告

此函式目前沒有說明文件;僅提供其參數列表。

參數

資料

最大長度

回傳值

傳回未壓縮的資料,如果失敗則傳回 false

另請參閱

新增註解

使用者貢獻的註解 1 則註解

anonymous at dekho-ji dot com
11 年前
在 PHP 程式碼中解碼/解壓縮接收到的 HTTP POST 資料,請求資料來自 Java/Android 應用程式,透過 HTTP POST GZIP/DEFLATE 壓縮格式傳送。

1) 從 Java Android 應用程式使用 DeflaterOutputStream Java 類別將資料傳送到 PHP,並在 PHP 中接收,如下所示
echo gzinflate( substr($HTTP_RAW_POST_DATA,2,-4) ) . PHP_EOL . PHP_EOL;

2) 從 Java Android 應用程式使用 GZIPOutputStream Java 類別將資料傳送到 PHP,並在 PHP 程式碼中接收,如下所示
echo gzinflate( substr($HTTP_RAW_POST_DATA,10,-8) ) . PHP_EOL . PHP_EOL;

從 Java Android 端(API 級別 10+)以 DEFLATE 壓縮格式傳送資料
String body = "Lorem ipsum shizzle ma nizle";
URL url = new URL("http://www.url.com/postthisdata.php");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Content-encoding", "deflate");
conn.setRequestProperty("Content-type", "application/octet-stream");
DeflaterOutputStream dos = new DeflaterOutputStream(
conn.getOutputStream());
dos.write(body.getBytes());
dos.flush();
dos.close();
BufferedReader in = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
String decodedString = "";
while ((decodedString = in.readLine()) != null) {
Log.e("dump",decodedString);
}
in.close();

在 PHP 端(v 5.3.1),解壓縮此 DEFLATE 資料的程式碼如下
echo substr($HTTP_RAW_POST_DATA,2,-4);

從 Java Android 端(API 級別 10+)以 GZIP 壓縮格式傳送資料

String body1 = "Lorem ipsum shizzle ma nizle";
URL url1 = new URL("http://www.url.com/postthisdata.php");
URLConnection conn1 = url1.openConnection();
conn1.setDoOutput(true);
conn1.setRequestProperty("Content-encoding", "gzip");
conn1.setRequestProperty("Content-type", "application/octet-stream");
GZIPOutputStream dos1 = new GZIPOutputStream(conn1.getOutputStream());
dos1.write(body1.getBytes());
dos1.flush();
dos1.close();
BufferedReader in1 = new BufferedReader(new InputStreamReader(
conn1.getInputStream()));
String decodedString1 = "";
while ((decodedString1 = in1.readLine()) != null) {
Log.e("dump",decodedString1);
}
in1.close();

在 PHP 端(v 5.3.1),解壓縮此 GZIP 資料的程式碼如下
echo substr($HTTP_RAW_POST_DATA,10,-8);

用於印出所有可用格式的壓縮資料的有用 PHP 程式碼。

$data = "Lorem ipsum shizzle ma nizle";
echo "\n\n\n";
for($i=-1;$i<=9;$i++)
echo chunk_split(strtoupper(bin2hex(gzcompress($data,$i))),2," ") . PHP_EOL . PHP_EOL;
echo "\n\n\n";
for($i=-1;$i<=9;$i++)
echo chunk_split(strtoupper(bin2hex(gzdeflate($data,$i))),2," ") . PHP_EOL . PHP_EOL;
echo "\n\n\n";
for($i=-1;$i<=9;$i++)
echo chunk_split(strtoupper(bin2hex(gzencode($data,$i,FORCE_GZIP))),2," ") . PHP_EOL . PHP_EOL;
echo "\n\n\n";
for($i=-1;$i<=9;$i++)
echo chunk_split(strtoupper(bin2hex(gzencode($data,$i,FORCE_DEFLATE))),2," ") . PHP_EOL . PHP_EOL;
echo "\n\n\n";

希望這個有幫助。如果這幫你省下很多精力和時間,請點讚。
To Top