• 締切済み

正規表現で「チルダ(~)」をマッチさせたい

正規表現でチルダをマッチさせたいのですが、うまくマッチしません。 if(ereg("~",$urlVars){ $a=1; }else{ $a=0; } $urlVarsには、フォームで送られてくるURLのアドレスが格納されます。よって、URLアドレスの「~」チルダを認識したいのです。

みんなの回答

  • vivlet
  • ベストアンサー率36% (24/66)
回答No.2

#1です 当方ではPHPの環境が無いので確証はもてませんが ereg("[^\~]",$urlVars) で~以外になると思います。 テストコードでも書いて試しに動かしてみるのが一番だと思います。 頑張ってください。

mat-21
質問者

お礼

レスありがとうございました。 あの後、いろいろ検証した結果、MacintoshのOS10.3の問題ということが解りました。つまり、Windowsでは問題なく動作するのですが、MacのOS10.3では、チルダが全角の「~」になってしまうことが判明しました。さらに、コード「\x7e」とすると、全角の「 ̄」オーバーラインとなり、オーバーラインでのURLアクセスするとうまくアクセスできない事。いちいちその箇所を「チルダ」に打ち変えしないといけない事のようです。OS10.3以前はうまくいったようです....。 よって、どのように対処するかの問題になってしまいました。ウェブでいろいろサーチしているのですが、問題可決のヒントがなかなかみつからないので、どうしようかな?と思っているのが実情です。 誠にありがとうございました。

  • vivlet
  • ベストアンサー率36% (24/66)
回答No.1

メタ文字は\を使ってエスケープさせないといけませんね //------------------------------ . 改行を除く任意の 1 文字 * 0 回以上のパターン繰り返し + 1 回以上のパターン繰り返し ? 0 または 1 回のパターン ^ 先頭から $ 末尾から -------------------------------// ということで if(ereg("\~",$urlVars){ にすればいけると思いますよ

mat-21
質問者

補足

ありがとうございます。 では、逆に「チルダ以外にマッチ」とした場合 ereg("[^\~]",$urlVars) みたいになると思うのですが、これだと、「\」「~」以外という事になってしまいますか?

関連するQ&A