2014-11-29 3 views
1

$ID이라는 문자열이 다른 페이지에서 들어오고 base64_decode($enc);을 치고 이상한 문자가 없는지 확인하고 싶습니다. $ID에는 해독 할 때 문자, 숫자, 밑줄 및 대시 만 포함해야합니다.높은 아스키, 구두점, 다른 이상한 문자들에 대한 체크 문자열

내가 도움이 될 것입니다 몇 가지 이상한 문자를 --- 자르는 preg_replace('/[\x80-\xFF]/', '', $string); 살펴 조금 했어 --- 그러나 나는 아직도 그것을 만들 여전히 가끔 @ 표지판 및 브래킷과 물건을 볼 수 있습니다.

아스키 테스트를 낮출 수있는 방법이 있습니까? 아니면 문자, 숫자, 밑줄 및 대시 이외의 모든 것을 잘라낼 수 있습니까?

올바른 방향으로 나를 가리키며 도움을 주시면 감사하겠습니다!

$check = preg_replace('~[^[:word:]-]+~', '', $ID); 

[:word:] 문자 클래스가 포함되어 있습니다

$check = preg_replace('/[^A-Za-z0-9_-]/', '', $ID); 

답변

0

는 문자 클래스를 부정 글자, 숫자 및 밑줄.

문자열을 소문자로 만들려면 strtolower()

0

당신이 교체를 사용할 수 있습니다 : 당신이 할 수 있도록 개방 대괄호 후 캐럿을 입력하면

$enc = $_GET["key"]; 
$ID= base64_decode($enc); 

if (empty($enc)) { echo "key is empty"; } else { 

    echo "string ok<br>"; 

    $check = preg_replace('/[\x80-\xFF]/', '', $ID); 
    echo $check; 
    // i can see this step is helping cut junk out, do more tests from here 
}