MySQL多言語utf8データベースの全文検索でpreg_replace
使用する検索フォーム入力のphp関数で使用するための正規表現が必要です。SQL
でphpfilter_var
を使用することを検討しFILTER_SANITIZE_STRING
ましたが、最終的にはpreg_replace
次のようになりました。
これらの機能が欲しい:
- スペースを保持し、連続する場合は 1 つだけ (シリアル スペース)
- 二重引用符を保持し、複数の場合は1つだけ続けます(で使用できるよう
phrase
にIN BOOLEAN MODE
) -
&+
& '~' を保持し、連続する場合は 1 つだけ- 多言語にしたいので、Unicode (utf8) 文字も考慮する必要があります
- アクセントを考慮する必要はありません。
これは私がやったことです:
$q = addslashes($q);
$q = preg_replace('/[^\w\d\s\s+\p{L}]/u', "", $q);
"
しかし、出力は引用符( )とマイナス( )のように私を満足させません-
。検索ボックスで使用する安全なクエリ文字列を作成するにはどうすればよいですか?
を使用するよりも良い方法はありpreg_replace
ますか?