我試圖將一個JS函數「翻譯」爲PHP等價物。 對於下面的JS函數:將JS函數翻譯爲PHP
function dF(s,n)
{
n=parseInt(n);
var s1=unescape(s.substr(0,n)+s.substr(n+1,s.length-n-1));
var t='';
for(i=0;i<s1.length;i++)
{
t+=String.fromCharCode(s1.charCodeAt(i)-s.substr(n,1));
}
return(unescape(t));
}
我這樣做在PHP中:
function dF($s, $n) {
$n1 = intval($n);
$s1 = urldecode(substr($s, 0, $n1) . substr($s, $n1+1, strlen($s)-$n1-1));
$t = '';
for($i = 0; $i < strlen($s1); $i++) {
$t .= unichr(substr($s1, $i) - substr($s, $n1, 1));
}
return urldecode($t);
}
/**
* Return unicode char by its code
*
* @param int $u
* @return char
*/
function unichr($u) {
return mb_convert_encoding('&#' . intval($u) . ';', 'UTF-8', 'HTML-ENTITIES');
}
而且它周圍的地方我urldecode()
失敗persume。我究竟做錯了什麼?
---更多信息---
結果爲JS的功能,例如dF('8%3Fn%3FAAl%3A%3Ej%3D%3C%3B%3A%3DA%3Ail%40llk%3Aj%3B8%38El%3B%40m','55');
將07f799d26b5432592ad8ddc2b306d38e
但我沒有得到這個結果。從第一個答案修復後, echo dF('8%3Fn%3FAAl%3A%3Ej%3D%3C%3B%3A%3DA%3Ail%40llk%3Aj%3B8%38El%3B%40m', '55')
爲空,空白,沒有任何打印。
什麼是「失敗」是什麼意思? – sachleen