- 締切済み
機種依存文字について
携帯の入力フォームで、文字化けする場合があるので、 下記の記事を参考に、指定の文字のみを抽出しようと思っていまsすが、 どうすれば、よいでしょうか、よろしくお願いいたします。 http://oshiete1.goo.ne.jp/qa1802902.html
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- sakusaker7
- ベストアンサー率62% (800/1280)
ちょっと時間が空いてしまいました。ごめんなさい。 > リンク先のNo.2を見ますとPerlで書いてあるようなので、 > それを、phpで書くとどうなるのかなと思ったのと、 preg_matchかpreg_match_all を使えば正規表現部分はそのまま使えるんじゃないでしょうか? my $ascii = '[0-9a-zA-Z_,./?=&;: )(]'; my $re_euc_c = '[\241-\376][\241-\376]'; my $re_euc_kana = '\216[\241-\337]'; my $re_euc_0212 = '\217[\241-\376][\241-\376]'; /(($ascii|$re_euc_c|$re_euc_kana|$re_euc_0212|\t)+)/go わかりやすいように文字種ごとにいったん文字変数に収めておいて 実際に使うときには変数の interpolation (展開)を利用するというパターンですね。 これもPHPでも同じだったと思いますが、違いましたっけ? フラグ(gとo)に関してはgはpreg_matchとpreg_match_allの関係なので preg_match_allにすればよいですね。 oはpreg*には対応するものがないようですが、なくても意味的な違いは ないので気にしないでもよいでしょう。 > 逆に適合しないものを削除する事も出来るのかなと思いましたが 正規表現でそういうことをやろうとするのは避けたほうがよいです。 正規表現の記述が無用に複雑になったり、条件に抜けが出やすいですから。 仮に適合しないもののパターンを記述できるのならできると思いますが、 外部とのデータのやり取りを考えると、許可できるデータの定義をして そこからもれたら一括削除がいいのではないでしょうか。
- sakusaker7
- ベストアンサー率62% (800/1280)
提示されているリンク先の情報で何が不足しているのでしょうか? 「指定の文字のみ」をどう書いていいかわからない という話なら、その辺をもう少し具体的に書いてください。
補足
sakusaker7様有難う御座います。 携帯の絵文字など不要な文字を取り除きたいのですが、 リンク先のNo.2を見ますとPerlで書いてあるようなので、 それを、phpで書くとどうなるのかなと思ったのと、 No.2の場合は、日本語文字コード範囲に適合した物を、 抽出しているようですが、逆に適合しないものを削除する事も 出来るのかなと思いましたが、どっちにしろどう書けばよいでしょうか? よろしくお願いいたします。