これは単純なはずですが、わかりません。
問題のサイトは UTF-8 でエンコードされています。
ある顧客が、当社の Web サイトのフォームに記入する際に問題を抱えていました。以下は、彼らが入力したデータの例です。
スパイサー・スミス・ロスト
通常の文字列のように見えますが、その文字列をメモ帳++などのアプリにコピーすると、「?」が表示されます。「SMITHS」(「SMITH?S」)という単語に表示されます。
スクリプトはフィールドをサニタイズし、次の文字を削除する追加の手順を実行します:
"\r\n", "\n", "\r", "\t", "\0", "\x0B"
.
しかし、この隠れたキャラクターをキャッチしていません。
ここで何が起こっているか知っている人はいますか?
編集: 私は php を使用しています。フィールドをサニタイズするために使用する関数は次のとおりです。
function strip_hidden_chars($str)
{
$chars = array("\r\n", "\n", "\r", "\t", "\0", "\x0B");
$str = str_replace($chars," ",$str);
return preg_replace('/\s+/',' ',$str);
}
EDIT 2: @thaJeztah が私を答えに導いてくれました。私がテストしていた文字列は、顧客が使用しているアプリケーションからコピーして貼り付けた後、サポート チケットから出力されたものです。実際の入力は
スパイサー・スミス