【问题标题】:Converting javascript function to PHP将javascript函数转换为PHP
【发布时间】: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


【解决方案1】:

您的str_replace() 中有错误。您必须替换 *^| 字符,而不是 \*\^\|\ 是正则表达式中的转义字符

【讨论】:

  • 你是如何使用 str_split 的?您应该在 for 循环中使用 strlen 而不是 count 。看不到更多您尝试将字符串作为数组访问的地方
猜你喜欢
  • 2022-01-04
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
  • 2011-08-02
  • 2016-06-02
  • 2012-12-09
  • 2021-09-03
相关资源
最近更新 更多