2013-02-01 17 views
6

これは単純なはずですが、わかりません。文字列から隠された文字を取り除く

問題のサイトは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

+0

を動作しますか?隠し文字を取り除くためのコードを含めることができますか? – thaJeztah

+0

ありがとう、私は自分の投稿を編集しました。 –

+0

私はそれがこのキャラクターであることを知っています。http://www.fileformat.info/info/unicode/char/92/index.htm私はそれを取り除く方法を知りません。 –

答えて

4

ました。制御文字を削除しますか?

Remove control characters from php String

+0

見つけてくれてありがとう。私はそこでいくつかのことを試みましたが、それはまだ動作していません。 –

+0

あなたが答えを受け入れたのは、私が最初に入力されたものの代わりに出力をテストしていたことに気づいたからです。 –

+1

@BillHあなたはあなたの質問を更新し、あなたがそれを解決するためにしたことを追加できますか? StackOverflowの品質を維持しようとしている:) – thaJeztah

1

これはまた、あなたがどのようなスクリプト言語を使用しているだけでなく

$chars = array("\r\n", '\\n', '\\r', "\n", "\r", "\t", "\0", "\x0B"); 
str_replace($chars,"<br>",$data); 
関連する問題