- ベストアンサー
文字列から、ある文字をマッチさせるには
こんにちは。いつもお世話になります。 PHPで下記のような文を、CGI (peal)では、どうしたらいいでしょうか。 map=asakusa.php の「asakusa」の部分だけをマッチさせる方法です。 $url = "http://xxx.jp/shop/index.php?map=asakusa.php" $map= explode("?", $url); if($map[0] == "asakusa"){ $map_name = "浅草マップ"; } よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでどうでしょ $url = "http://****/****/****?map=asakusa.php"; @map = grep (($_) = /^map=(.*)\.php$/, split(/[\?&]/, $url)); # map=xxxxx.phpの xxxxxの部分をすべて取り出して mapという配列に返す if($map[0] eq "asakusa"){ # 文字列の比較は == の代わりに eq $map_name = "浅草マップ"; }
その他の回答 (1)
- moon_piyo
- ベストアンサー率60% (88/146)
#1です >PHP風では、 >if(($url =~ /=eyelens_top/) || ($url =~ /=eyelens_top/)){ $a = "HOYA"; } perlでも、上記のとおりでよいですよ~
お礼
どうもありがとうございます。 if(($url =~ /eyelens/) || ($url =~ /=eyelens_top/)){ $a = "HOYA"; } #ちょっと訂正 if(($url =~ /eyelens|=eyelens_top/){ $a = "HOYA"; } これで、良いんですね。 えっ!じゃ、PHPもこれで良いのでしょうか? 早速、検証してみます。 +-------------------------- 何をやっていたのかというと、某有名アクセス解析CGIを 改造していました。ページ構成を全部PHPで制作したため、 Title(<title>.....</title>)の部分が全部、<title>" . $title . "</title> でアクセス解析側に反映されるので、それをCGI側で、 置き換え作業をしていました。 問題は取りあえず解決しました。 やはり、perlの基礎から勉強した方が良いと感じました。 それから、PHPを習得した方が、無難ですね。 ご親切にありがとうございました。
お礼
早速のレス、ありがとうございます。 上手く行きそうですね。 つ~か、今また違う事で悩んでますーー;) こちらをちょっと教えて下さい。 +---------------------------------------------------- if($url =~ /=eyelens_top/){ $a = "HOYA"; }と if($url =~ /eyelens/){ $a = "HOYA"; }を合体させる方法です。 PHP風では、 if(($url =~ /=eyelens_top/) || ($url =~ /=eyelens_top/)){ $a = "HOYA"; } みたいになるんですが、CGIでは、 例えば、 if($url =~ /eyelens/ || /=eyelens_top/){ $a = "HOYA"; } これは正しいでしょうか。 教えて下さい。 PS. perlって、みんなが言う程簡単じゃないですね。 なんでこんなにむずかしのかーー;)