【发布时间】:2011-11-10 01:12:24
【问题描述】:
我正在尝试转换这个函数:
function txt(str){
var t=''; var s=unescape(str);
var x=Math.round(Math.sqrt(16));
for(var i=0;i<s.length;i++) t+=
String.fromCharCode(s.charCodeAt(i)^(i%2?x:0));
document.write(t.replace(/\*/g,'<\/td><td>').replace(/\^/g,'" title="').replace(/~/g,'<\/td><\/tr><tr class="dbeven"><td>').replace(/!/g,'<\/td><\/tr><tr class="dbodd"><td>').
replace(/\|/g,'<\/td><td><a href="\/cgi-bin\/shdb\.pl\?key=')
);
}
到 php,这是我尝试过的:
function Txt($str)
{
$t = '';
$s = urldecode($str);
$x = round(sqrt(16));
for($i=0;$i<count($str);$i++)
{
$t = $t . chr(charCodeAt($str, ($i^($i%2?x:0))));
$t = str_replace("\*", '</td><td>', $t);
$t = str_replace("\^", '" title="', $t);
$t = str_replace("~", '</td></tr><tr class="dbeven"><td>', $t);
$t = str_replace("!", '</td></tr><tr class="dbodd"><td>', $t);
$t = str_replace("\|", '</td><td><a href="/cgi-bin/shdb.pl?key=', $t);
}
echo $t;
}
function charCodeAt($str, $i){
return ord(substr($str, $i, 1));
}
但它不起作用。有人能帮我吗? 谢谢
【问题讨论】:
-
你说的不起作用是什么意思?输出不是你预期的吗?它会崩溃吗?您收到任何错误消息吗?
-
你期待什么,你会得到什么?
-
您可以将
substr($str, $i, 1)替换为$str[$i] -
由于懒惰,我懒得弄清楚 txt 的功能。也许你应该解释一下。并更好地命名它。
标签: php javascript function