14歳の自分に衝撃の事実を告げてください

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

A 回答 (2件)

#1です


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

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

お礼日時:2005/09/02 11:07

メタ文字は\を使ってエスケープさせないといけませんね


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

この回答への補足

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

補足日時:2005/09/01 16:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報