-2

$decoded我在 PHP 中有一个数组。这是数组:

Array ( 
  [0] => Ú 
  [1] => Ý 
  [2] => æ 
  [3] => â 
)

如何extract将数组分配给变量?
我尝试使用extract()函数,它有效。但我的问题是:数组的索引数是动态的。
有没有机构想帮忙?
更新

这是我的 php 试用版:

<?php
$str = "admin";
echo $str."<br>";
$jc = strlen($str)-1;
for ($i=0;$i<=$jc;$i++){
echo $chr = substr($str,$i,1);
$an = ord($chr);
$asli = ord($chr);
if ($an >=65 and $an <= 90){
$an = $an+127;
}
if ($an >=97 and $an <= 122){
$an = $an+121;
}
if ($an >=48 and $an <= 57){
$an = $an+196;
}
if ($an == 32){
$an = 32;
}
   $decoded[$i] = chr($an);
   echo "  =>$asli => $an => ".$decoded[$i]."<br>";
}

?>

结果是:

admin
a =>97 => 218 => Ú
d =>100 => 221 => Ý
m =>109 => 230 => æ
i =>105 => 226 => â
n =>110 => 231 => ç

我想将解码的字符 (Ú,Ý,æ,â,ç) 分配到一个变量中。
所以,我的目标是将字符串解码adminÚÝæâç. 正如我上面所说,变量$str是动态的。

4

3 回答 3

3

您可以连接字符串:

<?php

$str = "admin";

echo $str."<br>";

$length = strlen($str);

$newstr = "";

for ($i = 0; $i < $length; $i++) {
    echo $chr = $str[$i];

    $an = ord($chr);

    if ($an >=65 and $an <= 90) {
        $an = $an+127;
    }

    if ($an >=97 and $an <= 122) {
        $an = $an+121;
    }

    if ($an >=48 and $an <= 57) {
        $an = $an+196;
    }
    if ($an == 32) {
        $an = 32;
    }

    $newstr .= chr($an);
}

echo $newstr;
于 2013-10-30T08:33:41.500 回答
3

像这样尝试,它将创建您的变量数组:

$array = Array ( 
  [0] => Ú 
  [1] => Ý 
  [2] => æ 
  [3] => â 
);
extract($array, EXTR_PREFIX_ALL, 'var');
$defined_vars = get_defined_vars(); 
print_r($defined_vars);

我知道这不是你要找的,但可以从中得到一些想法。

于 2013-10-30T08:29:45.657 回答
1

我只是添加一些东西。转换非常用字符时会遇到一些问题。
我试过你的脚本。您的字符将被一个不寻常的字符加倍或分隔,并且 ASCII 数字(64)将减去 64,因此您将其与 64 相加得到您的字符。
这是解决方案:

        $pwd = "AzsOke";
        $jc = strlen($pwd)-1;
        for ($i=0;$i<=$jc;$i++){
            if ( $i%2 == 1){
                $chr = substr($pwd,$i,1);
                $an = ord($chr);
                $asli = ord($chr);
                if ($an >=193 and $an <= 217){
                    $an = $an-127;
                }
                if ($an >=218 and $an <= 243){
                    $an = $an-121;
                }
                if ($an >=244 and $an <= 253){
                    $an = $an-196;
                }
                if ($an == 32){
                    $an = 32;
                }
                $codenumber_pwd .= $an+64;                       
            }
        }
于 2013-11-18T08:34:41.410 回答