2010-08-05 23 views
1

我不是一個PHP專家。我使用base64_encode編碼了一個URL。 我得到了一個很長的編碼字符串,其中包含許多奇怪的字符,完全像我想要的那樣。 有沒有辦法修剪這麼長的字符,讓我們說10或15個字符,所以我可以再次解碼它?如何修剪Base-64編碼的字符串?

我知道有trim()但這並不完全是我想要的。我想要一個長的編碼字符串比較短,後來我想再次解碼。

任何想法?

+0

這些字符中的每一個都表示數據的一部分,如果您刪除它們,您將無法解碼它,因爲某些數據將丟失。 – Luke 2010-08-05 10:39:40

+0

Base-64是一種編碼而不是加密。 – Gumbo 2010-08-05 10:41:42

+0

另一個URL縮短服務?通常的做法是創建一個數據庫,在其中存儲您自己的ID和URL。這樣你的代幣/ ID /短褲可以是你選擇的任何長度。 – bzlm 2010-08-05 10:44:13

回答

8

無法在不丟失某些數據的情況下「縮短」任何字符串。

  • 如果你想物理縮短編碼的字符串(與最終結果是隻有字符串的一部分),適用substr()的編碼版本:您需要首先進行解碼,然後重新編碼縮短的版本。

  • 另一種選擇是壓縮一個字符串。這可能縮短它:調查gzcompress()。但是,您的里程可能會有所不同:壓縮率取決於您擁有的數據類型。對於小輸入字符串,結果甚至可能比原始字符大。

  • 如果你想重用在多頁面流程一個變量,而不想通過鏈接或形式運輸它,可以考慮在用戶生成短隨機密鑰,並存儲數據會議:

    $_SESSION[$randomKey] = "lllloooooooooooong data here"; 
    

    你可以通過對隨機密鑰,並且始終使用$_SESSION[$randomKey]訪問「長」的數據。你需要爲此初始化一個session