WP_User_Query
を使用して部分文字列検索を検索しているうちに、この 答え を見つけました。 Stackexchangeですばらしい回答をいくつか提供している@kaiser。しかし、esc_attr
を使ってLIKEの用語('search' => '*' . esc_attr( $your_search_string ) . '*'
)をエスケープするのは混乱しました。
私は、WP_User_Query
がそのようなエスケープが不要で無駄な行使である場合には、準備文を利用すると思います。私は正しいですか?
次に、エスケープ処理を実行する必要があるとしても、 like_escape()
の方が目的に適していませんか。
like_escape()
は、%
および_
文字のみをエスケープします。関数全体は次のようになります。
function like_escape($text) {
return str_replace(array("%", "_"), array("\\%", "\\_"), $text);
}
コーデックスからの引用、 esc_attr()
<、>、&、 "および '(小なり、大なり、アンパサンド、二重引用符、一重引用符)の文字をエンコードします。エンティティを二重エンコードすることはありません。
alt、value、titleなどのHTML属性(特にフォーム値)をエスケープするときに常に使用します。
(私の強調)
さらに詳しく: データ検証
追加するように編集された - 質問の最初の部分には触れませんでした:( WP_User_Query
それ自身のデータ検証、それでは、本当にesc_attr()
を使う必要があるのでしょうか。
WP_User_Query
のコーデックスページは、データの検証が行われているかどうかにかかわらず、一方向にも他方向にも言っているようには見えません。 (valid
とescape
を検索しても何も表示されません。)これはesc_attr()
ページからのメモと組み合わせると - "エンティティーは二重にエンコードされません" - 私に示します渡す値にesc_attr()
を使用しても問題ありません。特に信頼できないユーザー提供のデータを使用した場合は、申し訳ありませんが、より安全です。