0

検索フォームがあります。次の行を使用して値を取得します。戻ると、プラス記号がスペースに置き換わり、一重引用符または二重引用符の後の文字が削除されます。ユーザーが必要なキーワードを検索できるようにしたい。これらの文字を表示するにはどうすればよいですか?

$title = trim(filter_input(INPUT_GET, 'title', FILTER_SANITIZE_SPECIAL_CHARS));

GETで送信する場合。

header("Location:http://site.org/search/?title=$title");

urlencode()を使用してプラス記号で機能しましたが、引用符では機能しませんでした。たとえば、c"sはc"sを返します。

ありがとう。

4

3 に答える 3

1

これらは、見た目に対応する特殊文字です。たとえば、GETリクエストのプラスはスペースに対応します。

こちらのリンクをご覧ください。

リダイレクトする前に、これらの文字を置き換える必要があります。でこれを行うことができますurlencode

于 2012-12-07T17:05:10.917 に答える
0

出力先のメディアに合わせてデータをエンコード/エスケープする必要があります。

  • url_encodeURL 経由で変数を送信するために使用します。
  • バインドされた変数を含む準備済みステートメントを使用してデータベースをクエリします。これにより、SQL インジェクションから安全になり、データベース内の引用符でテキストを検索できます。
  • htmlspecialchars結果をhtmlまたはjson_encodejavascriptに送信するようなものに出力するために使用します。
于 2012-12-07T18:40:53.050 に答える
0

FILTER_SANITIZE_SPECIAL_CHARS のマニュアルより

HTML エスケープ '"<>& および ASCII 値が 32 未満の文字。オプションで他の特殊文字を削除またはエンコードします。

しようとしている文字の ascii 値が 32 未満の場合は、おそらく別のルートに進む必要があります。

于 2012-12-07T17:05:55.143 に答える