0

データベースに渡す必要がある get url 入力がありますが、それを行う前に、ユーザー ID は常に整数であることがわかっているため、php の数値以外をすべて除外したいと考えていました。次のコードは私が思いついたものですが、これよりも良い方法を知っている人はいますか? またはこれは正しい方法ですか?

$id = preg_replace('#[^0-9]#i', '', $_GET['id']);
4

3 に答える 3

5

いいえ。

中のカラット(^)は を意味しNOTます。IE は 0 から 9 までの文字ではありません。それを取り除く必要があります。また、i正規表現は大文字と小文字を区別しないことを意味します。数字には他の文字のようにケースがないため、これについて心配する必要はありません。

保持したいパーツを選択する必要があります。これにはブラケットが使用されます。2 番目のパラメーターには、文字列を置き換える部分への参照を含める必要があります ( に格納する前に$id)。したがって、関数呼び出し全体は次のようになります。

$id = preg_replace('#([0-9]+)#', '\1', $_GET['id']);

+複数の数字があることを意味するだけです。

is_int()関数呼び出しの結果が実際に INT であることを確認するために使用できます$_GET['id']

$id = preg_replace('#([0-9]+)#', '\1', $_GET['id']);
if(is_int($id))
{
    //insert to DB
}
于 2012-02-25T21:50:05.063 に答える
0

数字を一致させる場合は、 i オプションは必要ありません。パターンは 1 桁の数字とのみ一致します。私は次のようなものを提案します

#[0-9]+# 

他のものを無視して、任意の長さの数字を取得します。

于 2012-02-25T21:44:15.413 に答える
0

またはこれ:

$id = preg_replace('/\D/', '', $_GET['id']);
于 2012-02-25T21:45:15.957 に答える