-1

画面に表示するフィードから文字列を受け取ります。この文字列には、除外したいゴミが含まれている場合と含まれていない場合があります。通常のシンボルをまったくフィルタリングしたくありません。

削除したい値は次のようになります: �</p>

削除したいのはこれだけです。関連するテクノロジーは PHP です。

提案をいただければ幸いです。

4

8 に答える 8

6

これはエンコーディングの問題です。その偽の文字をきれいにしようとするべきではありませんが、なぜそれらがスクランブルされているのかを理解してください.

データを Unicode として取得するか、フィード プロバイダーと合意して、両方が同じエンコーディングを使用するようにしてください。

于 2009-10-06T14:30:16.577 に答える
1

返信ありがとうございます。残念ながら、提出されたものには次の問題がありました。

明らかな理由で間違っています:

ereg_replace("[^A-Za-z0-9]", "", $string);

これ:

s/[\u00FF-\uFFFF]//

また、正規表現の非推奨の ereg 形式を使用するものも、範囲が大きすぎて正規表現を処理できないため、preg に変換したときに機能しませんでした。また、その範囲にゴミが浸透する穴があります。

この提案:

これはエンコーディングの問題です。その偽の文字をきれいにしようとするべきではありませんが、なぜそれらがスクランブルされているのかを理解してください.

有効ですが、受信したデータがどのようにエンコードされるかを制御できないため、役に立ちません。それは外部ソースから来ます。ゴミはあるときとないときがあります。

したがって、私が思いついた解決策は比較的汚いものでしたが、より堅牢なものがない場合、標準的な文字、数字、記号をすべて受け入れ、残りを破棄するだけです。

これは今のところうまくいくようです。解決策は次のとおりです。

$fixT = str_replace("£", "&pound;", $string); 
$fixT = str_replace("€", "&euro;", $fixT);
$fixT = preg_replace("/[^a-zA-Z0-9\s\.\/:!\[\]\*\+\-\|\<\>@#\$%\^&\(\)_=\';,'\?\\\{\}`~\"]/", "", $fixT);

誰かがより良いアイデアを持っている場合、私はまだそれらを聞きたいと思っています. 乾杯。

于 2009-10-06T15:58:39.473 に答える
0

何をフィルタリングし、何を保持するかについて明確な定義がないため、これを行うのは難しいでしょう。通常、空の四角として表示される文字は、使用している書体にグリフがないものであるため、「次のように表示されるもの: �」の定義は恐ろしく不正確です。

どの文字有効であるかを正確に判断し (これは、どのような種類のデータ クリーンアップでも常に適切なアプローチです)、それらの文字以外はすべて破棄する方がはるかに優れています。PHPフィルター関数は、必要な複雑さと堅牢性のレベルに応じて、これを行う 1 つの可能性です。

于 2009-10-06T14:25:51.563 に答える
0

これを試して:

  • フィードからサンプルを手動でダウンロードします。
  • Notepad++または別の高度なテキスト エディターで開きます(Linux の KATE が適しています)。
  • エンコーディングを変更して、あるエンコーディングから別のエンコーディングに変換してみてください。

文字を適切に表示する設定が見つかった場合は、そのエンコーディングでサイトをエンコードするか、そのエンコーディングからサイトで使用するものに変換する必要があります。

于 2009-10-06T23:04:16.433 に答える
0

この質問を見て、文字列の各バイトの値を取得してください。(これは、マルチバイトのオーバーロードがオフになっていることを前提としています。)

バイトを取得したら、それらを使用して、これらの「ゴミ」文字が実際に何であるかを判断できます。文字列のエンコードを誤って解釈したり、間違ったフォントで表示したりした結果である可能性があります。それらをここに投稿すると、人々がさらにあなたを助けることができます.

于 2009-10-06T16:06:36.350 に答える
0

フィードからのデータの問題を解決できず、情報をフィルタリングする必要がある場合は、次の方法が役立ちます。

PHP5 filter_input は、入力文字列のフィルタリングに非常に優れており、かなりの relexability を可能にします

filter_input(input_type, variable, filter, options) 

同じフィルタリングが必要な場合は、すべてのフォーム データを 1 行でフィルタリングすることもできます :)

いくつかの良い例とそれに関する詳細情報がここにあります:

http://www.w3schools.com/PHP/func_filter_input.asp

オプションの詳細については、PHP サイト: Validation Filtersを参照してください。

于 2009-10-06T14:23:03.283 に答える
0

フォントが表示できるグリフの範囲外の文字を探しています。フォントが表示できる最大の Unicode 値を見つけて、その値を超える値を空の文字列に置き換える正規表現を作成できます。例は

s/[\u00FF-\uFFFF]//

これにより、文字 255 を超えるものはすべて削除されます。

于 2009-10-06T14:23:49.897 に答える
-1

皆さん、こんにちは、

     try this Regular Expression to remove unicode char from the string : 

     /*\\u([0-9]|[a-fA-F])([0-9]|[a-fA-F])([0-9]|[a-fA-F])([0-9]|[a-fA-F])/ 

ありがとう、チントゥ(prajapati.chintu.001@gmail.com)

于 2012-04-24T12:41:19.453 に答える