• 締切済み

path_infoのよる静的出力に関して。

こんにちは、 どうすれば、よいか困っております。 $a = "aaa.php?id=$b_id"; 現在上記の状態を、下記のように 出力したいのですが、 ttp://www.aaa/aaa.php?id=1        ↓ ttp://www.aaa/aaa-1.htm modrewriteだとうまくいかないので、 path_infoを使うと出来るみたいですが、どうすればよいでしょうか?

みんなの回答

  • satoh
  • ベストアンサー率77% (17/22)
回答No.2

ソースがどのようなものかわかりませんが、 ウェブページでの反応でしたら、 if( $_REQUEST["id"] && preg_match( "/(^[^?]+)\\.([^\\.]+)/", $_SERVER["SCRIPT_NAME"], $matches ) ){ // if文が成功した場合、 // $matches[1]にはURLの拡張子の前まで // $matches[2]には拡張子が入っています。 print $matches[1]."-".$_REQUEST["id"].".htm"; } else { print "not match\n"; } ということでしょうか。 ※$_REQUESTはPOSTを無視するなら$_GETにしてください。 もし違うようでしたら、もうちょっと実際の例に近い形で質問していただければ、回答もしやすくなるかと思います。 P.S. 自動リンクを防ぐためだけのttpはわたしはすっごく嫌いです(笑)。ま、いいですけど。

sunybu_2005
質問者

お礼

回答有難う御座いました。 もう少し考えてみます。

  • satoh
  • ベストアンサー率77% (17/22)
回答No.1

# なぜttp://なのかはわかりませんが…。 実際にGETが発生した状態か、文字列だけの話かがわかりませんので、文字列だけの話として(例の形式以外は存在しないとして)、 if( preg_match( "/(.+)\\.[^\\?]+\\?id=(\\d+)/", $a, $matches ) ){ $result = "ttp://" . $matches[ 1 ] . "-" . $matches[ 2 ] . ".htm"; print "$result\n"; } else { print "not match\n"; } でいかがでしょうか。 # pathinfo()は拡張子を分けてくれないので使えないと思います。

sunybu_2005
質問者

補足

satoh 様有難う御座いました。 上記方法で動的ページへのリンクは 静的に出力する事は、出来ましたが、 動的ページは、IDナンバーを取得して、 自動的に情報を表示しているようですが、 アドレスを出力する際にどうすればよいか、 ソースを見ても分からず、現在悩んでおります・・・ P.S hをはずしたのは、自動リンクをふせぐためです。

関連するQ&A