File: unusedcompress.php

package info (click to toggle)
php-doc 20061001-1
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k
  • size: 45,764 kB
  • ctags: 1,611
  • sloc: xml: 502,485; php: 7,645; cpp: 500; makefile: 297; perl: 161; sh: 141; awk: 28
file content (81 lines) | stat: -rw-r--r-- 2,351 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
/*
  +----------------------------------------------------------------------+
  | PHP Version 4                                                        |
  +----------------------------------------------------------------------+
  | Copyright (c) 1997-2004 The PHP Group                                |
  +----------------------------------------------------------------------+
  | This source file is subject to version 3.0 of the PHP license,       |
  | that is bundled with this package in the file LICENSE, and is        |
  | available through the world-wide-web at the following url:           |
  | http://www.php.net/license/3_0.txt.                                  |
  | If you did not receive a copy of the PHP license and are unable to   |
  | obtain it through the world-wide-web, please send a note to          |
  | license@php.net so we can mail you a copy immediately.               |
  +----------------------------------------------------------------------+
  | Authors:    Mitja Slenc <mitja@php.net>                              |
  +----------------------------------------------------------------------+
  
  $Id: unusedcompress.php,v 1.3 2004/01/01 00:35:41 goba Exp $
*/

$tocomp=implode("", file("prefixcompressed.txt"));
$tocomp=str_replace("\n", "", $tocomp);

$result="";
$allchars="";
for ($a=32; $a<125; $a++)
	if (chr($a)!="'" && chr($a)!="\\" && $a!=127)
		$allchars.=chr($a);
$acl=strlen($allchars);

function GetUnused($text)
{
	global $allchars, $acl;
	for ($a=0; $a<$acl; $a++)
		if (strpos($text, $allchars[$a])===false)
			return $allchars[$a];
	return "";
}


while (true) {
	$replacewith=GetUnused($tocomp);
	if (!strlen($replacewith))
		break;

	$sc=strlen($tocomp);

	$already=array();
	$best=0;
	$counter=array();

	for ($len=2; $len<8; $len++) {
		for ($pos=0; $pos<=($sc-$len); $pos++) {
			$wh=substr($tocomp, $pos, $len);
			if (!isset($counter[$wh])) {
				$counter[$wh]=-3;
			} else {
				$counter[$wh]+=$len-1;
			}
		}
	}

	$best=max($counter);

	if ($best>0) {
		$bestchars=array_search($best, $counter);
		$tocomp=str_replace($bestchars, $replacewith, $tocomp);
		if ($result) 
			$result=$replacewith.$bestchars."}".$result;
		else
			$result=$replacewith.$bestchars;
	} else {
		break;
	}
}

fwrite(fopen("compressed.txt", "w"), $tocomp);
fwrite(fopen("compkey.txt", "w"), $result);

?>