2013-05-14 131 views
1

問題:爲什麼這些匹配輸出?使用FILTER_SANITIZE_STRING將字符串轉換爲md5哈希值

所以我一直在跟蹤下來,是造成我很多頭痛的我想不出是什麼原因造成的問題與經過MD5哈希的縮短版被sanatized與FILTER_SANITIZE_STRING

我知道的一個問題似乎很奇怪,我清理MD5哈希,但這個類不僅用於這種方式,我試圖避免使多種方法來做同樣的事情。

class test { 
public function select($match,$debug) { 
     $match1 = filter_var($match, FILTER_SANITIZE_STRING); 
     if ($debug == '1') { 
      var_dump($match,$match1); 
     } 

} 
} 

$title = "April 2013"; // Example Title 
$currentHUID = substr(md5($title), 0, 12); // Convert string to UID not for encryption just comparison first 12 char of MD5 Hash 

$test = new test(); 
$test->select("'$currentHUID'",'1'); 

結果:字符串(14) 「 '8860d4398c9b'」 字符串(22) 「 '8860d4398c9b'」

+0

那麼,真正的問題是什麼? – samayo 2013-05-14 02:46:40

+0

14個字符的字符串顯示22個字符...這對你來說不奇怪? – sin0cide 2013-05-14 02:50:40

+0

適合我:http://codepad.viper-7.com/fEuEzQ – 2013-05-14 02:51:26

回答

2

您與您的值發送單引號和這些獲得編碼。

如果你使用:

$match1 = filter_var($match, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); 

的結果將是相同的輸入。

Example

另請參閱manual

+1

似乎即使我沒有閱讀手冊,但我錯過了Flag感謝您的支持幫幫我! – sin0cide 2013-05-14 03:07:17

相關問題