2011-02-07 18 views
1

文字列の一部に非ASCII文字が使用されています。 PHPスクリプトを使用してASCII文字のみで文字列を取得するにはどうすればいいですか?任意の指導を事前にASCII文字のみの文字列php

どうもありがとう..

+1

ASCII以外の文字がある場合は文字列全体を無視するか、文字だけを無視するか、文字を置き換えますか? – helloandre

+0

印刷できない文字を含むASCII文字ですか? – Gordon

答えて

3

おそらく最も簡単なオプションは、(ドキュメントを参照してください)(iconv拡張が利用可能な場合)のいずれか//IGNOREまたは//TRANSLITオプションを使用して、iconv機能を使用することです、その行動があなたのニーズに合っているかどうか。

+0

こんにちは皆、私は印刷可能なASCIIのcharectersがほしいです。 – doni

+0

iconvは、今すぐ理解できるエンコーディングでのみ動作します。文字列 'a^Xb'('^X'は制御文字)を持っているとしましょう。 '^ X'はそれが理解できるエンコーディングの一部ではないので、iconvはそれを決して削除しません。それは// IGNOREでそれを削除するのに使われましたが、iconvのトップコメントのバグに従えば、それはもはやケースではないことがわかります。 – gcb

5
<?php 

echo preg_replace('/[^(\x20-\x7F)]*/', '', 'Standard ASCII and some gärbägè'); 

?> 
+0

あなたはまだあなたがチェックしていない文字を得ることができます。常にホワイトリスト!あなたが望むことをあなたが知っているものにマッチさせるエラーを起こしにくい。 – gcb

+2

@gcb - あなたはしません。実際には、これはすでにホワイトリストです。「印刷可能なASCII文字以外のものはすべて拒否します」。それがブラックリストの場合、「これらの特定の印刷不可能な文字または非ASCII文字を拒否し、他のすべてを受け入れる」と言うでしょう。あなたはそれを後方に持っています。 – Saul

+0

あなたは正しいです。そこで '^ 'が見当たらず、16進コードが印刷可能範囲外のものであると仮定しました。コーヒーの不足でそれを責めるだろう:)私はまっすぐに設定してくれてありがとう。 – gcb