php实现的简单压缩英文字符串的代码_php实例
                        
                            时间:2021-07-01 10:21:17
                            帮助过:15人阅读
							                        
                     
                    
                    PHP,适应于上帖简单加密后的密文 
 代码如下:
//replacement来自上个版本的加密替换  
     function compress_func($match) {return strlen($match[0]).$match[0]{0};}  
     function uncompress_func($match) {return str_repeat($match[2], $match[1]);}  
     function compress($str) {  
        $i = 0;  
        $pattern = array();  
        while(isset($replacement{$i})) array_push($pattern, "/".$replacement{$i++}."{2,}/");  
        return preg_replace_callback($pattern, "compress_func", $str);  
    }  
     function uncompress($str) {  
        return preg_replace_callback("/(d+)(w)/", "uncompress_func", $str);  
    }  
?> 
AWK,通用格式 
 代码如下:
#!/bin/awk  
function compress(str, _ARGVEND_, str_out, str_len, i, s, l) {  
    str_out = "";  
    str_len = length(str);  
    s = "";  
    l = 1;  
    for(i =1; i <= str_len; i++) {  
        if(substr(str, i, 1) == s) l++;  
        else {  
            if(s != "") {  
                if(l > 1) str_out=str_out""l  
                str_out=str_out""s;  
            }  
            s = substr(str, i, 1);  
            l = 1;  
        }  
    }  
    return str_out;  
}  
function uncompress(str, _ARGVEND_, str_out, str_len, i, c) {  
    str_out = "";  
    str_len = length(str);  
    for(i =1; i <= str_len; i++) {  
        c = 0;  
        while(substr(str, i, 1)~/[0-9]/) {  
            c = c*10+substr(str, i, 1);  
            i++;  
        }  
        if(c < 1) c = 1;  
        while(c--) str_out = str_out""substr(str, i, 1);  
    }  
    return str_out;  
}