私はこの毎日のデータ フィードを使用しています。驚いたことに、MySQL にあるとフィールドが正しく表示されませんでした。(誰がフィードを提供するかは、私には制御できません。)
そこで、mysqldump を実行したところ、このレコードの郵便番号と市区町村に非印刷文字が含まれていることがわかりました。「vi」で次のように表示しました: <200e>
私は PHP で作業しており、このデータを解析して MySQL データベースに入れています。これでトリム機能を使用しましたが、それは取り除かれません。問題は、MySQL データベースの郵便番号に対してクエリを実行すると、印刷されていない文字を含むレコードが見つからないことです。
MySQL データベースに入れる前に、これをクリーンアップしたいと思います。
PHPで何ができますか?最初は、正規表現は az、AZ、および 0-9 のみを許可するものだと思っていましたが、それはアドレスには適していません。住所には、ピリオド、コンマ、ハイフン、およびおそらく現時点では考えていないその他のものが使用されています。
最善のアプローチは何ですか?文字の印刷のみを許可する以外に、それを正確に定義するために何と呼ばれているのかわかりません。この仕事をするトリムのような別のPHP関数はありますか? それとも正規表現?もしそうなら、私は例が欲しいです。ありがとう!
PHP関数の使用を調べたところ、これがPHP.NETに投稿されているのを見ました:
<?php
$a = "\tcafé\n";
//This will remove the tab and the line break
echo filter_var($a, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
//This will remove the é.
echo filter_var($a, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
?>
FILTER_FLAG_STRIP_HIGH を使用すると、'vi' で見られると述べた <200e> が実際に取り除かれますが、André などの名前で文字のアクセントが取り除かれるのではないかと懸念しています。
多分正規表現が解決策ですか?