- 締切済み
正規表現で「チルダ(~)」をマッチさせたい
正規表現でチルダをマッチさせたいのですが、うまくマッチしません。 if(ereg("~",$urlVars){ $a=1; }else{ $a=0; } $urlVarsには、フォームで送られてくるURLのアドレスが格納されます。よって、URLアドレスの「~」チルダを認識したいのです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- vivlet
- ベストアンサー率36% (24/66)
回答No.2
#1です 当方ではPHPの環境が無いので確証はもてませんが ereg("[^\~]",$urlVars) で~以外になると思います。 テストコードでも書いて試しに動かしてみるのが一番だと思います。 頑張ってください。
- vivlet
- ベストアンサー率36% (24/66)
回答No.1
メタ文字は\を使ってエスケープさせないといけませんね //------------------------------ . 改行を除く任意の 1 文字 * 0 回以上のパターン繰り返し + 1 回以上のパターン繰り返し ? 0 または 1 回のパターン ^ 先頭から $ 末尾から -------------------------------// ということで if(ereg("\~",$urlVars){ にすればいけると思いますよ
質問者
補足
ありがとうございます。 では、逆に「チルダ以外にマッチ」とした場合 ereg("[^\~]",$urlVars) みたいになると思うのですが、これだと、「\」「~」以外という事になってしまいますか?
お礼
レスありがとうございました。 あの後、いろいろ検証した結果、MacintoshのOS10.3の問題ということが解りました。つまり、Windowsでは問題なく動作するのですが、MacのOS10.3では、チルダが全角の「~」になってしまうことが判明しました。さらに、コード「\x7e」とすると、全角の「 ̄」オーバーラインとなり、オーバーラインでのURLアクセスするとうまくアクセスできない事。いちいちその箇所を「チルダ」に打ち変えしないといけない事のようです。OS10.3以前はうまくいったようです....。 よって、どのように対処するかの問題になってしまいました。ウェブでいろいろサーチしているのですが、問題可決のヒントがなかなかみつからないので、どうしようかな?と思っているのが実情です。 誠にありがとうございました。