2013-05-14 99 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

相关问题