2014-08-28 60 views
1


我的工作,我有這樣的一些文字的網頁:
AA,BB,CC,A1,B2,C3
我還要些代碼替換單詞(如AA)於保存在變量例如這個字符串就是我的PHP變量:
簡單加密:在PHP需要解密算法

<?php 
    $var1 = "A"; //For AA 
    $var2 = "B"; //For BB 
    $var3 = "C"; //For CC 
    $var4 = "1"; //For A1 
    $var5 = "2"; //For B2 
    $var6 = "3"; //For C3 
?> 

而且文本AA,BB,CC,A1,B2,B3會像這個:
ABC123
我該怎麼用ph​​p做到這一點?

總結我需要一個解密算法,密碼文本AA,BB,CC,A1,B2,C3將被轉換爲計劃文本ABC123

+0

你最好應該使用數組來存儲不同的字符串值。然後,您可以使用以下方法輕鬆更改它們:myarray [0] =「xxxx」 – derdida 2014-08-28 17:52:08

+0

只是爲了說明,您希望刪除逗號之間每個文本的第一個字母? – hawaiianchimp 2014-08-28 17:52:09

+0

你可能想給一個真實世界的例子,你想要什麼。我可以看到每個人都有不同的方式來解釋這個請求。我讀了它,因爲你需要一個正則表達式來替換所有連續的單個字母,所以AAAAAAAAA會變成A,就像AA變成A一樣。 – 2014-08-28 17:58:17

回答

3

全部工作的腳本這裏給出樣本加密目錄。

<?php 
$encript = array(
'a'=>'GG', 
'b'=>'HH', 
'c'=>'II', 

'A'=>'DD', 
'B'=>'EE', 
'B'=>'FF', 

'1'=>'AA', 
'2'=>'BB', 
'3'=>'CC'); 


function decrypt($str,$encript) 
{ 
    $decript = array_flip($encript); 
    $str_arr = explode(",",$str); 
    $dec = ""; 
    foreach($str_arr as $val) 
    { 
     $dec .= $decript[strtoupper(trim($val))]; 
    } 
    return $dec; 
} 

function encrypt($str,$encript) 
{ 
    $str_arr = str_split($str); 
    $dec = ""; 
    foreach($str_arr as $val) 
    { 
     $dec .= $encript[trim($val)].","; 
    } 
    return $dec; 
} 


$cypher = "AA,BB,DD,CC,EE,FF,GG,HH"; 
$text = "Ab1Ca"; 

echo decrypt($cypher,$encript); 
echo "<br/>"; 
echo encrypt($text,$encript); 
?> 
  • 首先,我們必須爲每一個字符作爲關聯數組的映射。我們不得不翻譯數組。
  • 然後必須遍歷每個編碼字符串並從翻轉的數組構建真實文本。
  • 在加密中,將字符串拆分爲單個字母數組。
  • 循環訪問數組並使用映射數組構建加密。

工作出把可在以下網址:http://sugunan.net/demo/str1.php

+1

Tnx,但我有一個問題,我有約62變量可以使用數組?你可以在演示中添加完整的代碼嗎? – 2014-08-28 18:39:49

+0

是的,你可以使用數組來處理。看到修改後的代碼在以下網址:http://sugunan.net/demo/str1.php – sugunan 2014-08-28 18:44:44

+0

但我想知道你如何設置AA到一個我正在尋找這個 – 2014-08-28 18:49:58

1

假設文本存儲在$string,試試這個:

$vars = array(
    'AA' => 'A', 
    'BB' => 'B', 
    'CC' => 'C', 
    'A1' => '1', 
    'B2' => '2', 
    'C3' => '3', 
); 

$string = str_replace(array_keys($vars), array_values($vars), $string); 

還聽取來自PHP的文檔警告上str_replace

更換爲了疑難雜症

因爲str_replace()內容替換從左到右,它可能會替換之前插入的價值的 當做多個替換時。另見 the examples in this document

+1

跳過'foreach'並執行'str_replace(array_keys($ var ),array_values($ vars),$ string);' – dave 2014-08-28 17:56:35

+1

你可能想用'str_replace'的返回值做些什麼... – dognose 2014-08-28 17:57:37

+0

@dave謝謝。感謝dognose以及(但我不能同時標記兩個人) – sjagr 2014-08-28 17:58:56

0

試試這個

$str = 'AA,BB,CC,A1,B2,C3'; 
$arr = explode(',', $str); 
$newStr = ''; 
foreach($arr as $val){ 
    $newStr .= substr($val,1,1); 
} 
echo $newStr; 

輸出

ABC123 
+0

Op說:替換應該保存在*變量* - 不是字符串的第二個字符。 (與示例原因重合) – dognose 2014-08-28 17:59:51

0

如果你不想改變你的字符串試試這個

$count = 0; 
while(true){ 
    $var = "var".++$count; 
    if($$var){ 
     $$var = ${$var}[1]; 
    } 
    else break; 
}