環境:PHP 5.3文字列/コメントの中にないパターンに一致する方法は?
私は独自のクエリパラメータ置換メソッドを作成しようとしています。
select * from xxx where a=? and b>?
、すべての?
パラメータの値が既知であると仮定して、当然のことながら
select * from xxx where a=1 and b>2
に変換します。基本的に私はこれをしたいです。 OK、それはちょっと単純ですが、質問には十分です。
だから、私がする必要があるのは、指定された文字列のすべての?
マークを見つけることです。簡単だよね?しかし、一つのキャッチがあります:私は文字列やコメントの中にあるマークを探したくありません。だから、この文字列で:
select * -- I know * is bad, but just once can't hurt, right?
from xxx /* ? */ where a=? and b='Question?'
?
マークの一つだけを交換する必要があります。
私の直感は、PHPのpreg_replace()
はになるはずですが...私の正規表現の知識は適切なパターンを構築するのに失敗します。私はそれを "手で"解析することもできますが、パフォーマンスが不適切なヒットになるのではないかと心配しています。 )、または私はそれを手動で文字単位で解析する必要がありますか?
これは単なる楽しいのですか、これには理由がありますか?なぜ個人的なパラメータフレームワークが必要なのですか? – Nanne
これはどのようなSQL方言ですか? – Gumbo
クエリ内のコメントを許可するので、あなたはそれをさらに難しくしました。 –