2013-05-14 3 views
1

질문 : 출력과 일치하지 않는 이유는 무엇입니까? FILTER_SANITIZE_STRING을 (를) 사용하는 클래스에서 md5 해시로 문자열

그래서 나는 나에게 내가 알고

FILTER_SANITIZE_STRING와 sanatized되는 MD5 해시의 단축 버전을 통과하여 문제의 원인을 알아낼 수 없습니다 두통을 많이 일으키는 문제를 추적 한 나는 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

+0

14 자 문자열은 22자를 읽습니다 ... 당신에게 이상하지 않습니까? – sin0cide

+0

이 저에게 효과적입니다 : http://codepad.viper-7.com/fEuEzQ –

답변

2

당신은 당신의 값을 작은 따옴표를 보내는 이들 얻을 인코딩 됨.

당신이 사용하는 경우 :

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

결과는 입력과 동일합니다.

Example.

manual도 참조하십시오.

+1

평소처럼 설명서를 읽었지만 깃발을 놓쳐 버렸습니다. 도움! – sin0cide