SQLite で PDO を使用しており、大文字と小文字を区別しないユニコード文字列のマッチングを実装したいと考えています。
私はこれを見つけました:
function lexa_ci_utf8_like($mask, $value) {
$mask = str_replace(
array("%", "_"),
array(".*?", "."),
preg_quote($mask, "/")
);
$mask = "/^$mask$/ui";
return preg_match($mask, $value);
}
$pdo->sqliteCreateFunction('like', "lexa_ci_utf8_like", 2);
信頼できないテキストで使用する必要があるため、パラメーター化されたクエリを使用します。
問題は、信頼できないテキストに%
または_
のようなワイルドカードを含めることができることです。ワイルドカードとして動作させたくありません。