• 締切済み

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

  • パスがうまく通らないので、パスについて教えてください。

    パスがうまく通らないので、パスについて教えてください。 ▽やりたいこと http://okwave.jp/qa/q6132108.html ▽知りたいこと  →パスを通すとは、具体的に、どこのことを指すのでしょうか? 1)php infoのinclude_path(ブラウザで確認) Configuration PHP Core include_path .:/usr/local/lib/php 2)php infoのPATH(ブラウザで確認) Environment Variable Value PATH /command:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin 3)echo $PATH(SSHで確認) 出力すると、1)とも2)とも異なる結果となります…。 パスを通すとは、具体的に、どこのことを指すのでしょうか? また、上記それぞれの意味、及び内容が違う理由を、教えてください。

    • ベストアンサー
    • PHP
  • 重複時の網掛けについて

    以前、重複行を網掛けにする処理で質問を載せましたが、 もう少し深くやりたくて試しているのですが、 無限ループが発生して困っております。 A B 1 aaa 1 aaa 1 aaa 2 aaa 2 aaa 2 aaa 3 bbb 3 bbb 4 aaa 4 aaa 上記データがあって結果を A B C 1 aaa 重複 1 aaa 重複 1 aaa 重複 2 aaa 重複 2 aaa 重複 2 aaa 重複 3 bbb パス 3 bbb パス 4 aaa パス 4 aaa パス B列の値が同じの場合は、A列の番号が大きいもののみパスと するように処理を作成しようと思っております。 下記でまずはどのように値が返ってくるか試したのですが、 無限ループになってしまいました。 Dim i As Integer Dim n As Integer LastRow = Range("A65356").End(xlUp).Row For i = 1 To LastRow A_retsu = Cells(i, 1).Value B_retsu = Cells(i, 2).Value For n = 1 To LastRow If A_retsu = Cells(n, 1).Value And B_retsu = Cells(n, 2) Then MsgBox "パス" Else MsgBox "重複" End If Next Next End Sub 最終結果は、 3 bbb パス 3 bbb パス 4 aaa パス 4 aaa パス 上記だけを残して他は削除させる処理を作りたいです。 すいませんがお願いします

  • phpでmysqlから画像パスを出力する

    phpを勉強始めたばかりで、データベースを使う必要がでてきたため、初心者サイトを 読んでいるのですが、一点質問があります。 行いたい事は、データベースに保存した画像パスをphpで出力するだけなのですが、パスが 文字列として扱われてしまっています。画像を出力するにはどうすれば良いでしょうか? 例えば以下のようなphpプログラムで、nameには画像パスである 「abc.jpg」という文字が 入っていたとすると以下ではそのままabc.jpgという文字列が出力されてしまします・・・。 <?php $pdo = new PDO("mysql:dbname=aaa", "root"); $pdo->query("set names utf8;"); $st = $pdo->query("SELECT * FROM bbb"); while ($row = $st->fetch()) { $name = htmlspecialchars($row['name']); echo '<img src="$name">'; } ?>

  • pear_info.phpが表示できません

    PCをサーバーにしてPHPの練習をしている初心者です。最近PEARをインストールしたのですが、機能しなくて困っています。試しにpear_info.phpを作ってブラウザで開くと下記の警告がでました。 ---------------------------------------------- <?php require_once("PEAR/Info.php");//←line 8 $info = new PEAR_Info(); $info->show(); ?> Warning: require_once(PEAR/Info.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\pear_info.php on line 8 Fatal error: require_once() [function.require]: Failed opening required 'PEAR/Info.php' (include_path='.;C:\php5\pear') in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\pear_info.php on line 8 かなりの時間を費やして原因を調べていたのですが、どうしても解決する事ができません。助言を頂けると非常にありがたいです。 php.iniのパス include_path = ".;c:/php/includes;C:/php/PEAR" また、phpinfoで Configuration File (php.ini) Path の項目は C:\WINDOWS となっています。 上記に記載したエラーで「include_path='.;C:\php5\pear'」と表示されている部分がありますが、C:\php5と言うフォルダは作っていません。C:\phpと言うフォルダならあります。 PCの環境  Windows XP  Apache  2.2.6  PHP 5.2.4

    • 締切済み
    • PHP
  • echoの出力がうまくできない

    echoを使ってできないことがあり、自力解決ができないでいます。 お分かりになる方いらっしゃれば解決方法をご教授願います。 【やりたいこと】 WordPressでphpをカスタマイズしています。 その中で下記のことをやろうとしています。 echo '<a href="' . the_permalink() . '">' . the_title() . '</a>'; 【期待する結果】 下記のような感じです。WordPressの関数?の戻り値が展開されて <a href="aaa.html">bbb</> 要はリンクが張られている状態を作りたいのですが、現在の結果は下記のようになります。 aaa.htmlbbb とリンクが張られずにそのまま文字列が表示されてしまいます。 Fifrebugで確認すると、なぜか上記文字列の下に <a href=""></a> と入れられているのがわかりました。 試しにWordPressの関数の戻り値を使わず下記(ハードコード)にすると echo '<a href="' . 'zzz.html' . '">' . 'test' . '</a>'; ただしくリンクが張られています。 また関連するかはわかりませんが、戻り値の扱い方がおかしいのかも判断して 下記のようにしました。 $title = the_title(); 変数に入れるつもりが、なぜかこれが、echoがされた状態になり、(上記のコードだけで)プレビュー画面でタイトルが表示されています。 他にはヒアドキュメントでやっても同じような結果となり、原因がわかりません。 もともとは <a href="<?php the_permalink( ); ?>"><?php the_title(); ?></a> で書いてあったコード(正常に動作)をIF文などの条件が必要になり、(上記の書き方では私の知識ではわかりづらく) <?php ?> のようなブロック単位?に書き直しているタイミングで発生しました。 当方はPerl等メインでやっていますが、PHPは初心者です。ネットで検索したサンプルなどを手直しして使っているレベルです。 識者の方お願いします。

    • ベストアンサー
    • PHP
  • phpのinclude_pathのエラーについて

    phpで以下のエラーが出ております。 いろいろ試しているのですが、解決できません。 各種設定ファイルに設定の誤りがあるのでしたら教えていただきたいと思います。 1)Fatal error: main(): Failed opening required '' (include_path='.;c:\php\includes') in C:\Apache2\htdocs\aaa\ins.php on line 26 2)Fatal error: main(): Failed opening required '' (include_path='.;c:\php4\pear') in C:\Apache2\htdocs\aaa\ins.php on line 26 c:\php4\pearというディレクトリは存在しないがなぜか出る。 3)Fatal error: main(): Failed opening required '' (include_path='.;c:\php\includes\aaa') in C:\Apache2\htdocs\aaa\ins.php on line 26 4)Fatal error: main(): Failed opening required '' (include_path='.;C:\Apache2\htdocs\aaa') in C:\Apache2\htdocs\aaa\ins.php on line 26 ##ins.phpのソース: $tpl = "ccc.tpl"; require_once($tpl); ##ディレクトリ構成 C:\Apache2\htdocs\aaa ins.php ccc.tpl ##php.iniの設定: ---有効にした場合1)のメッセージ include_path = ".;c:\php\includes"  ---コメントアウトした場合2)のメッセージ ;include_path = ".;c:\php\includes"  ---以下のpathにフォルダを作成してccc.tplを配置した場合3)のメッセージ include_path = ".;c:\php\includes\aaa" ---以下のpathを指定した場合4)のメッセージ include_path = ".;C:\Apache2\htdocs\aaa" ##httpd.confの設定: line 231 DocumentRoot "C:/Apache2/htdocs" line 256 <Directory "C:/Apache2/htdocs"> AllowOverride Options AuthConfig ##環境 os:winXP apache2:apache_2.0.58 php:PHP Version 4.4.1

    • ベストアンサー
    • PHP
  • データ結合について。

    皆さん教えてください。 SQL初心者です。 下記のファイルを用いて最終結果をだしたい。 SQL文を教えてください。 A-FILE CD,ID-A,NAMEID-A,ID-B,NAMEID-B 10,35,060,36,01 11,35,062,36,01 12,35,062,36,02 13,35,060,36,02 B-FILE ID,NAMEID,NAME 35,060,AAA 35,062,BBB 36,01,CCC 36,02,DDD となっています。 今回、上記のファイルをしようして。 A-FILEを元に。結果を下記のようにしたい。 11,35,060,AAA,36,01,CCC 12,35,062,BBB,36,01,CCCといった具合にほしい。 よろしくお願いいたします。

  • mod_rewriteの相対パス

    いつもお世話になっております。 mod_rewrite を使ってパスの書き換えを行いたいと思っております。 以前にも mod_rewrite について質問させていただいたのですが 違う方法で解決できました。 画像ファイル等のRewriteRule を教えていただきたく質問させていただきます。 例えば・・・ http://domain.jp/a.php?id=111 を http://domain.jp/a/id/111 に書き換えた場合、階層が深くなるため画像が表示されなくなります。 a.php の中には以下のような画像ファイルの記述があります。 <img src="./img/aaa.jpg"> <img src="./img/bbb.gif"> できれば、RewriteRule を使って画像ファイルのパスを書き換えたいと 思っております。 どのようなルールを書けばよろしいでしょうか。 それとも絶対パスじゃないと無理なのでしょうか。 ご教授お願いいたします。 よろしくお願いいたします。 <環境> PHP:4.3.2 Apache:2.0.40 (Red Hat Linux)

  • PHPが出力するHTMLを表示するには?

    PHPが出力するAサイトのHTMLをBサイト上で PHPを使用して表示したいのですが、どうすれば良いですか? (1) http://A.../x.php の出力する内容を (2) http://B.../p.php で表示させたいです。proxyサーバみたいな感じです。 出来れば、(1)は、IDとパスワードで認証する形に なっているので、それが出来る形にして欲しいです。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • pear_info.phpも表示できません

    PCをサーバーにしてPHPの練習をしている初心者です。最近PEARを入れてDBパッケージをインストールしたのですが、機能しなくて困っています。試しにpear_info.phpを作ってブラウザで開くと下記の警告がでました。 ---------------------------------------------- <?php ini_set ("display_errors", "1"); error_reporting(E_ALL); require_once ("PEAR/Info.php"); //←line 5 $info = new PEAR_Info(); $info->show(); ?>  Warning: require_once(PEAR/Info.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\pear_info.php on line 5 Fatal error: require_once() [function.require]: Failed opening required 'PEAR/Info.php' (include_path='.;c:\php\includes;C\php\PEAR;') in C:\Program Files\Apache Group\Apache2\htdocs\pear_info.php on line 5 (コピーペーストすると\になりましたが、ブラウザの表示では/の逆向きです) ---------------------------------------------- DB::connectでも同様の警告が出ます。PHPとMySQLだけだと問題なく動くのでPEARのパスを確認したのですか、原因が分かりません。助言いただけるとありがたいです。 php.iniのパス  ;***** Added by go-pear  include_path=".;c:\php\includes;C\php\PEAR;"  ;***** phpinfoのinclude_path  .;c:\php\includes;C\php\PEAR;  (コピーペーストすると\になりましたが、ブラウザの表示では/の逆向きです) コマンドプロンプトから "C:\PHP>pear list" での表示  Archive_tar  1.3.2  stable  Console_Getopt  1.2.3  stable  DB  1.7.11 stable  MDB2  2.4.1  stable  PEAR  1.6.0  stable  Pear_info  1.6.1  stable  Structure_Graph  1.0.2  stable PCの環境  Windows XP  Apache  2.0.59  PHP 5.2.3  MySQL 5.0.41

    • ベストアンサー
    • PHP
このQ&Aのポイント
  • パソコンをかえてWINDOWS7にドライバをインストールしたのですが認識されません
  • お使いの環境はWindows7です。USBケーブルで接続しています。
  • 関連するソフトやアプリについての情報はありません。
回答を見る