これは単純なはずですが、わかりません。文字列から隠された文字を取り除く
問題のサイトはUTF-8でエンコードされています。
お客様が当社ウェブサイトでフォームに記入する際に問題が発生しました。ここに入力したデータの例があります。
スパイサー-SMITHS LOST
これは、通常の文字列のように見えますが、あなたはメモ帳などのアプリにその文字列をコピーするとき++あなたは、「?」を参照してくださいよ「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が答えに私を導きました。私がテストしていた文字列は、顧客が使用しているアプリケーションからコピーして貼り付けた後のサポートチケットの出力です。実際の入力は、あなたがここを見てしようとするかもしれ
スパイサー-SMITH'S
を動作しますか?隠し文字を取り除くためのコードを含めることができますか? – thaJeztah
ありがとう、私は自分の投稿を編集しました。 –
私はそれがこのキャラクターであることを知っています。http://www.fileformat.info/info/unicode/char/92/index.htm私はそれを取り除く方法を知りません。 –