Como codificar e decodificar matrizes multidimensionais em php?

Possível Duplicado:
PHP array Codificação e decodificação: precisa de uma function para codificar e decodificar cadeia ou matriz com delimitadores ou matriz em si …

Oi. eu sou novo no php. Eu preciso escrever duas funções separadas para codificação e decodificação de matrizes multidimensionais em php. Eu anexei um plugin ………. encode.class.php …………..

Bug = $on; } function Encode() { $ar = explode(":", $this->Pattern); $enc = $this->ToEncode; if ($this->Bug) echo "\n"; foreach ($ar as $num => $ltr) { switch ($ltr) { case "E": $enc = base64_encode($enc); break; case "D": $enc = base64_decode($enc); break; case "R": $enc = strrev($enc); break; case "I": $enc = $this->InvertCase($enc); break; } if ($this->Bug) echo "\n"; } if ($this->Bug) echo "\n\n"; @$this->Encoded = ($enc == $this->Str) ? "No Encoding/Decoding Pattern Detected!" : $enc; return $this->Encoded; } function Decode() { $pattern = ($this->DecodePattern != "") ? $this->DecodePattern : $this->Pattern; //Reverse the pattern $this->PatternFlip($pattern); //make into an array $ar = explode(":", $this->PatternFlip); $t = ($this->Encoded == "") ? $this->ToDecode : $this->Encoded; if ($this->Bug) echo "\n"; foreach ($ar as $num => $ltr) { switch ($ltr) { case "E": $t = base64_encode($t); break; case "D": $t = base64_decode($t); break; case "R": $t = strrev($t); break; case "I": $t = $this->InvertCase($t); break; } if ($this->Bug) echo "\n"; } if ($this->Bug) echo "\n\n"; $this->Decoded = ($t == $this->Encoded) ? "No Encoding/Decoding Pattern Detected!" : $t; return $this->Decoded; } function MakePattern($len = 10) { //possible letters // E - Base64 Encode // R - Reverse String // I - Inverse Case $poss = array('E','R', 'I'); //generate a string for ( $i = 0 ; $i < $len ; $i++ ) { $tmp[] = $poss[ rand(0,2) ]; } //echo $str. "
"; //fix useless pattern section RR II $str = implode(":", $tmp); //fix $str = str_replace( 'R:R:R:R:R:R' , 'R:E:R:E:R:E' , $str ); $str = str_replace( 'R:R:R:R:R' , 'R:E:R:E:R' , $str ); $str = str_replace( 'R:R:R:R' , 'R:E:R:E' , $str ); $str = str_replace( 'R:R:R' , 'R:E:R' , $str ); $str = str_replace( 'R:R' , 'R:E' , $str ); //fix $str = str_replace( 'I:I:I:I:I:I' , 'I:E:I:E:I:E' , $str ); $str = str_replace( 'I:I:I:I:I' , 'I:E:I:E:I' , $str ); $str = str_replace( 'I:I:I:I' , 'I:E:I:E' , $str ); $str = str_replace( 'I:I:I' , 'I:E:I' , $str ); $str = str_replace( 'I:I' , 'I:E' , $str ); //string is good, set as pattern $this->Pattern = $str; return $this->Pattern; //if we need it } function PatternFlip($pattern) { //reverse the pattern $str = strrev($pattern); $ar = explode(":", $str); foreach ($ar as $num => $ltr) { switch ($ltr) { case "E": $tmp[] = "D"; break; case "D": $tmp[] = "E"; break; case "R": $tmp[] = "R"; break; case "I": $tmp[] = "I"; break; } } $rev = implode(":", $tmp); $this->PatternFlip = $rev; return $this->PatternFlip; } // This is my custom Case Invertor! // if you would like to use this in a script, please credit it to me, thank you function InvertCase($str) { //Do initial conversion $new = strtoupper( $str ); //spluit into arrays $s = str_split( $str ); $n = str_split( $new ); //now we step through each letter, and if its the same as before, we swap it out for ($i = 0; $i = 65 AND $num = 97 AND $num <= 122 ) ) { if ($num ............

A partir deste plugin, eu preciso usar as funções codificar e decodificar nas minhas funções para verificação de padrões. Se alguém pode me ajudar ……. Será bom para mim. Eu estou precisando disso ……..

Use serialize() e unserialize() para transformar os arrays em strings e voltar para matrizes (também funciona com tudo o resto, exceto resources)

parece uma class muito grande de codificador / decodificador.

talvez esse algoritmo RC4 seja mais fácil

 //encrypt $encrypted = RC4Crypt::encrypt('your key','some string to encrypt'); //decrypt $decrypted = RC4Crypt::encrypt('your key',$encrypted); //The RC4 Class class RC4Crypt { function encrypt ($pwd, $data){ $key[] = ''; $box[] = ''; $pwd_length = strlen($pwd); $data_length = strlen($data); for ($i = 0; $i < 256; $i++){ $key[$i] = ord($pwd[$i % $pwd_length]); $box[$i] = $i; } for ($j = $i = 0; $i < 256; $i++){ $j = ($j + $box[$i] + $key[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } $cipher = ''; for ($a = $j = $i = 0; $i < $data_length; $i++){ $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; $k = $box[(($box[$a] + $box[$j]) % 256)]; $cipher .= chr(ord($data[$i]) ^ $k); } return ($cipher); } function decrypt ($pwd, $data){ return RC4Crypt::encrypt($pwd, ($data)); } }