PHPとMySQLデータベースを使用している私のウェブページを簡単に検索したいと思っています。 OR
,-
および"
をサポートする基本検索語を入力してください。私は、複数のフォーム入力を使用するのではなく、Googleと同じようにユーザーエクスペリエンスを向上させるためのテキストフィールドを1つだけ使用したいと考えています。 >['a', 'b', 'c']
検索文字列を(my)SQL where句を正規表現のグループに変換する
アイデアがあったすべてのサブ検索グループを抽出して、そのサブグループでこれらの
ので、有効な検索条件からSQLステートメントを構築するために正規表現を使用してパーサ
a b c
を書くことでした a b OR c
- >['a', 'b OR c']
a -b
- >['a', '-b']
a "b c"
- >['a', '"b c"']
a b OR c -d
- >['a', 'b OR c', '-d']
a "b c" -d
- >['a', '"b c"', '-d']
a "b c" OR d -e
- >['a', '"b c" OR d', '-e']
a "b c" OR d OR "e f" -g
- >['a', '"b c" OR d OR "e f"', '-g']
結果グループを使用して、where句を動的に作成できました。
私は正規表現([\-a-z])|(\"[a-z\s]+\")
で自分自身を試しましたが、2回以上発生する可能性があるOR
によるグループ化については失敗しました(最後の例を参照)。 "..."
部分文字列または1+
(?:\s+OR\s+(?:"[^"]*"|\S+))*
非空白 - - 0+のシーケンスの
魅力的な作品です! – zersaegen