0

ユーザーが検索語を入力できるフォームがあります。基本的には、ページの上部にある検索バーです。ユーザーが何かを入力した場合、Google と同様に、ユーザーが入力した内容が新しいページにも含まれ、ユーザーが忘れないようにします。

まず、ページは UTF-8 を使用するように設定されます (ページは適切に UTF-8 でエンコードされます):

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

入力ボックスは次のとおりです。

<input class="sb_input" name="q" type="text" value="<?php if (isset($displaysearch)) echo $displaysearch; ?>" />

この上に、検索語を少しクリーンアップするための PHP コードをいくつか示します。

$search=$_GET['q'];
$displaysearch=preg_replace('@[^\p{L}| ]@','',trim($search));

問題は、 と入力するÜberと、新しいページの検索ボックスに が表示さ�berれ、どこが間違っているのかわかりません。

4

1 に答える 1

2

HTML<meta>タグは、おそらく最も無関係なビットです。UTF-8を最後まで読んで理解していることを確認してください。さらに:

  • $_GET['q']が定義されているかどうかをテストしていません。これは、完全なエラー レポートを無効にしたことを示しています。その場合は、先に進む前に修正する必要があります。エラー メッセージの助けなしにコーディングすることは不可能です。ここに簡単な説明があります。
  • エスケープされていないテキストを HTML に挿入しています。 htmlspecialchars()を使用する必要があります。
  • 正規表現でu修飾子を省略したため、テキストはシングルバイトとして処理されています。
于 2013-03-07T11:26:07.133 に答える