4

ASCII以外の文字を含むテキストファイルがいくつかありますが、それらを削除したいのですが、書式設定文字は保持します。

私は試した

$description = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $description);

しかし、それは改行や他のフォーマットを取り除くように見え、ヘブライ語にも問題があり、それがこれを変換しました

משפטיםנוספיםמהמומחה。נסוותהנו!חגחנוכהשמח****************************************חדש--האפליקציההיחידהשאומרתלךמה מצבהסוללהשלך**バージョン1.1の新機能-専門家による講演!!! *

これに

1.4: "、..." "...""50..."。、。!****************************************-**バージョン1.1の新機能-エキスパート話します!!! *

4

2 に答える 2

3

非ASCII文字を置き換えていません...ASCII文字は0〜127の範囲内です。したがって、基本的にあなたがやろうとしているのは、ある文字セットを別の文字セットに変換するための rexeg を書くことです (文字の一部を置き換えるだけではなく、はるかに困難です)...

あなたがしたいことについては、iconv関数が必要だと思います...入力エンコーディングを知る必要がありますが、それができたら、表現できない文字を無視するように指示できます:

$text = iconv('UTF-8', 'ASCII//IGNORE', $text);

ISO-8859-1、または必要な他のターゲット文字セットを使用することもできます。

于 2010-08-23T16:54:05.403 に答える
1

UTF-8 文字列を 1 バイト エンコーディングのように扱っているため、実行していることは機能しません。実際には文字の一部を削除しています。uUTF-8 モードを有効にするために正規表現にフラグを追加する必要がある場合。

制御文字とその他の ASCII 範囲文字のみを残したいので、他のすべてを '' に置き換える必要があります。そう:

$description = preg_replace('/[^\x{0000}-\x{007F}]/u', '', $description);

あなたの入力のために与える:

. ! ******************** - * バージョン 1.1 の新機能 - 専門家が語る!!! *
于 2010-08-23T17:10:38.417 に答える