Преобразование функции JavaScript в PHP - PullRequest
0 голосов
/ 10 ноября 2011

Я пытаюсь преобразовать эту функцию:

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));
}

Но это не работает. Кто-нибудь может мне помочь? спасибо

1 Ответ

1 голос
/ 10 ноября 2011

У вас есть ошибки в вашем str_replace(). Вы должны заменить *, ^, | символы, а не \*, \^, \|. \ является escape-символом в регулярных выражениях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...