7

これは単純なはずですが、わかりません。

問題のサイトは 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 が私を答えに導いてくれました。私がテストしていた文字列は、顧客が使用しているアプリケーションからコピーして貼り付けた後、サポート チケットから出力されたものです。実際の入力は

スパイサー・スミ​​ス

4

3 に答える 3

4

ここを見てみてください。制御文字を削除しますか?

php文字列から制御文字を削除します

于 2013-02-01T20:30:43.970 に答える