2014-10-29 65 views
1

我有一個這樣的輸入:這是什麼編碼,我怎樣才能在PHP中編碼一個字符串呢?

$input = 'GFL/R&D/50/67289'; 

我試圖去這樣的:

GFL$2fR$26D$2f50$2f67289 

到目前爲止,我來最接近的是這樣的:

echo filter_var($input, FILTER_SANITIZE_ENCODED, FILTER_FLAG_ENCODE_LOW) 

這產生:

GFL%2FR%26D%2F50%2F67289 

如何從給定的輸入中獲得所需的輸出以及結果是什麼類型的編碼?

順便提一下,請注意區分大小寫。需要$2f而不是$2F

+0

不知道,但最壞的情況下,你可以嘗試一個簡單的'str_replace函數( '%', '$',$ STR)' – 2014-10-29 15:22:26

+0

@MarcB它不會因爲案件的敏感性問題的工作 - 過濾var var大寫結果,所以我不知道我可以可靠地找到編碼值的結果部分,以便將這些部分小寫。 – bcmcfc 2014-10-29 15:25:15

回答

2

這將達到目的:URL編碼,然後小寫的編碼序列和交換%用於$用預浸回調(PHP的PCRE不支持的情況下移改性劑):

$input = 'GFL/R&D/50/67289'; 
echo preg_replace_callback('/(%)([0-9A-F]{2})/', function ($m) { 
    return '$' . strtolower($m[2]); 
}, urlencode($input)); 

輸出:

GFL$2fR$26D$2f50$2f67289 
+0

這很出色,謝謝。 – bcmcfc 2014-11-04 12:01:50

+0

雖然我仍然很好奇它是一種特定的編碼,還是隻是一個混雜的urlencode版本。 – bcmcfc 2014-11-09 12:31:32

相關問題