こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

使用禁止文字の検索について

たびたびすみません。

文字列の中に使用禁止文字がないかチェックしたいのですが悩んでおります。
"}"が文字列に含まれていないかをチェックするとおかしな事が起こります。
チェックにはstrpos関数を使っています。

例えば、
$res = strpos("パクス・ロマーナ", "}");
print("パクス・ロマーナ結果".$res);
とすると

本来ならば結果は false が返るはずなのですが、
「パクス・ロマーナ結果11」となってしまいます。

タブ区切りのcsvファイルの中の文字列をチェックしているのですが
それが原因なのでしょうか?
他の文字("'"や"{")については何も問題がないのです。

どなたかご教示していただけますと助かります。
よろしくお願いいたします。

投稿日時 - 2005-10-14 15:39:36

QNo.1713424

すぐに回答ほしいです

質問者が選んだベストアンサー

SHIFT_JISを使っているとこういう事はあたりまえにあります。
SHIFT_JISで「マ」は、\x83\x7bで、2バイト目の\x7bが「}」になるので、US-ASCIIしか想定していないstrpos関数ではうまくいきませぬ。

mb_string系の関数を使うか、全部自前で処理しなければなりません。または、内部エンコーディングをEUCやUTF-8にするか。

投稿日時 - 2005-10-14 15:57:23

お礼

そういうことだったんですね...

mb_string系の関数を使ってもダメでした。
自前処理を考えたいと思います。

参考になりました、ありがとうございます。

投稿日時 - 2005-10-14 17:14:59

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

$res = strpos("パクス・ロマーナ", "\}");
print("パクス・ロマーナ結果".$res);

これで駄目ですか?

投稿日時 - 2005-10-14 15:48:44

あなたにオススメの質問