1

$ID別のページから入ってきてヒットするという文字列がありbase64_decode($enc);、奇妙な文字がないかどうかを確認したいと思います。$ID復号化するときは、文字、数字、アンダースコア、およびダッシュのみを含める必要があります。

preg_replace('/[\x80-\xFF]/', '', $string);いくつかの奇妙な文字を切り取る方法を少し見てきました---これは役に立ちます---しかし、@記号や括弧などがまだ入っていることが時々わかります.

アスキーテストを下げる方法はありますか? または、文字、数字、アンダースコア、およびダッシュ以外のすべてを切り取るにはどうすればよいでしょうか?

私を正しい方向に向けるための助けは素晴らしいです、そしてありがとう!

$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
 }
4

2 に答える 2

0

開始角括弧の後にキャレットを入力すると、文字クラスが無効になるため、次のことができます。

$check = preg_replace('/[^A-Za-z0-9_-]/', '', $ID);
于 2014-11-29T16:19:21.040 に答える