2012-09-25 74 views
2

我有解密早些時候解密的數據功能:從加密數據刪除空格

public function Decrypt($encrypedText) { 
    $key = "The secret key is"; 
    $decryptedText = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($encrypedText), MCRYPT_MODE_ECB); 

    $trimmedData = rtrim($decryptedText, '\0'); 

    echo strlen($trimmedData);   // 32 

    return $trimmedData; 
} 

如果我把在「測試」的功能,結果將是「測試」 + 28個空格。我得到了一些人的提示,他告訴我使用上述函數中的「rtrim」來刪除空格,但這似乎不起作用(當我檢查結果的長度時,它仍然是32)。

我能做些什麼來消除這些空白?

+0

你試過簡單的'trim()'嗎? – Tchoupi

+0

是的,結果相同。 – holyredbeard

+1

您是否嘗試過沒有第二個參數的trim()?這樣做會刪除所有空白字符,而不僅僅是您指定的NUL字節字符。 '$ trimmedData = rtrim($ decryptedText);'http://php.net/manual/en/function.rtrim.php – Buggabill

回答

1

嘗試呼叫rtrim()而沒有第二個參數。這將刪除主機的空白字符,而不僅僅是你指定的NUL字節字符。

$trimmedData = rtrim($decryptedText); 
0

奇怪,修剪()應該工作。嘗試使用正則表達式:

$string = preg_replace('~\s+$~', '', $string); 
+0

試過了,它仍然包含32個字符:/ – holyredbeard

+0

這證明這些字符不是空格。將輸出字符串保存到一個文件,並用十六進制編輯器查看它... –

+0

Point taken!有沒有另一種方式來查看字符串,而不保存到文件? – holyredbeard