Проблема с декодированием

koder_

Новичок
Переписываем JS функцию на PHP

Есть код функции на JS:

Код:
function _dS(s){ 
	var i;
	var r=""; 
	var l=s.length-1; 
	var k=s.substr(l,1); 
	
	for (i=0;i<l;i++){ 
		c=s.charCodeAt(i)-k; 
		if(c<32){ 
			c=127-(32-c);
		} 
		r+=String.fromCharCode(c); 
	} 
	
	return r;
}
Это декодирование строки. Появилась необходимость написать это же на PHP
В итоге вышло

PHP:
function sos_decode($code)
{
	$ret = '';
        $code = stripcslashes($code);
	
	$l = strlen($code)-1;
	$k = substr($l,1);
	
	for($i=0;$i<$l;$i++){
		$c = ord($code[$i])-$k;
		if($c<32){ 
			$c = 127-(32-$c);
		} 
		$ret .= chr($c);
	}	
	return $ret;
}
В результате моя переписанная функция не всегда (только иногда) работает так же как и JS.

Пример1: тут не соответствие

IN: Erwy~})}#ynF+qrmmnw+)wjvnF+|x|+) ju~nF+;?=;@=@@<;+)8G9
JS: <input type="hidden" name="sos" value="2642747732" />
PHP: Botv{z&z vkC(nojjkt(&tgskC(yuy(&|gr{kC(8<:8=:==98(&5D

Пример2: совпало

IN: Cpuw|{\'{!wlD)opkklu)\'uhtlD)zvz)\'}hs|lD)9=;9>;>>:9)\'6E7
JS: <input type="hidden" name="sos" value="2642747732" />
PHP: <input type="hidden" name="sos" value="2642747732" />


Где же я ошибся?
 

rotoZOOM

ACM maniac
Вот это чо такое? $c = ord($code[$i])-$k;
И чему должно равняться $k ?

-~{}~ 29.03.09 19:24:

Точнее так, чему должно равняться у тебя k на словах объясни.
 

rotoZOOM

ACM maniac
А еще лучше ка так, выводи чему равняется k в JS и в PHP и дебугь.
 
Сверху