PHPスクリプトでHTML出力する方法

このQ&Aのポイント
  • 実行したスクリプトをob関数を使ってHTML出力する方法についてご質問いただきました。
  • また、インプットフォームに文字を入力して受け取り、同時にHTMLファイルを書き出して保存する方法についてもお伺いしています。
  • 以下のように、ob関数とファイル操作関数を組み合わせることで、スクリプトを記述することができます。
回答を見る
  • ベストアンサー

実行したスクリプト"自体"をob関数でHTML出力

スクリプト”自分自身”をob_startなどの出力制御関数を使って HTML出力したいのですが、うまく行きません。 以下のように、hoge1.phpというスクリプトを書いて、 別の hoge2.phpをインクルードしてhoge2.phpを HTML出力することはできますが、 ob_start(); include('hoge2.php'); fopen処理 fwite処理 fclose($fd); ob_clean(); たとえば、インプットフォームに文字を入力して、 受け取る。そして表示。 と同時にHTMLファイルを書き出して保存する場合、 どのようにスクリプトを書けばいいでしょうか。 お手数おかけしますが。お力を貸してください。 よろしくお願いいたします。

  • PHP
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.2

こういうイメージであってるかな・・・? http://ideone.com/T9qn9i

fukurou125
質問者

お礼

まさにドンピシャです! わざわざスクリプトを書いていただいて ありがとうございました。 とても助かりました。本当にありがとうございました。

その他の回答 (2)

回答No.3

本来の要件は /*----------------------------- たとえば、インプットフォームに文字を入力して、受け取る。そして表示。 と同時にHTMLファイルを書き出して保存する場合、 どのようにスクリプトを書けばいいでしょうか。 -------------------------------------*/ でしょうけど、こちらは置いときますw ob関係の使い方について書きます。(嘘書いてるかもしれんけど) //出力抑制開始 コレ以降の出力はバッファに溜め込まれる ob_start(); print "hogehoge"; //hogehogeはブラウザには送られない、バッファ行き $hoge = ob_get_clean(); //現在のバッファの中身を取得し、出力バッファを削除します。 これで出力しようとしてた内容は変数に取得出来ます。 ob_ end_ flush とか色々ありますんで、他の詳しいことはマニュアル見よう~

fukurou125
質問者

お礼

出力抑制関数について、分かりやすく教えてくださって、 本当に感謝です。 はい、マニュアル・・・難しいですけど、 頑張って読んでみます^^

  • t_ohta
  • ベストアンサー率38% (5080/13275)
回答No.1

ob_get_contents でいいのではないでしょうか。 http://www.php.net/manual/ja/function.ob-get-contents.php

fukurou125
質問者

お礼

すぐに解答をしていただいて 誠にありがとうございます。 ob_get_contents という方法があるのですね。 とても助かりました。ありがとうございました。

関連するQ&A

  • PHPが出力したHTMLにinclude文を

    PHP4.3で、HTMLファイルをテンプレート出力する方式の掲示板を使っているのですが、テンプレートのHTMLファイル内に別のPHPスクリプトで出力した表示を貼り付けようと思い、 <?include("hoge.php");?> とinclude文を書き込んだのですが、これが反映されずにソース内に<?include("hoge.php");?>という記述がそのまま出て来てしまいます。 これが出来ない原因は、PHP実行→HTML表示→HTML内のPHP実行という二度のPHP実行が出来ないのか、<?include~を「文字列」として認識してしまっているのかのどちらかだと思うのですが、、 PHPファイルには一切手が加えられない状況なので、テンプレートHTMLに手を加えるだけで別のPHPスクリプトを読みこませたいのですが、何かいい方法は無いでしょうか?

    • ベストアンサー
    • PHP
  • ob_start関数?について教えて下さい

    あるスクリプトを勉強していて、 ob_startと解らない関数がでてきたので PHPマニュアルをみると ob_start -- 出力のバッファリングを有効にする この関数は出力のバッファリングをオンにします。 出力のバッファリングを有効にすると、 (ヘッダ以外の) スクリプトからの出力は実際には行われず、 代わりに内部バッファに保存されます。 と説明がありました。しかしよく説明の意味が理解できずになやんでいます。どなたかわかりやすいように噛み砕いて教えてくただけないでしょうか? ちなみにその関数が使われていたスクリプトは ob_start(); phpinfo(8); $PHPInfoModules = ob_get_contents(); ob_end_clean(); $PHPInfoModules = strip_tags($PHPInfoModules); $GDVersion = stristr($PHPInfoModules, "gd version"); $GDVersion = stristr($GDVersion, "version"); } $GDVersionEnd = strpos($GDVersion, "."); $GDVersion = substr($GDVersion, $GDVersionEnd-1, 1); となっております。上記の関数が参考になればと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ob_start()した後、ob_flush()しなくても出力される件。

    いつもお世話になっております。 バージョン:PHP5.2.5 【1】 <?php ob_start(); echo 'test'; ?> 【2】 <?php ob_start(); echo 'test'; ob_flush(); //【1】との違いはここだけ。 ?> 【1】のように、 ob_flush() の記述のない書き方でも「test」が出力されてしまうのは、なぜなのでしょう? (実際、試してみたところ、出力されてしまいました。) 「?>」の記述をもとに、自動的にflushしちゃう仕様なのでしょうか? 通常であれば、【2】のように書かないと、「test」は出力されないのではと私は思っているのですが…。

    • ベストアンサー
    • PHP
  • JavaScriptからPHP呼び出しHTML出力で…

    現在phpにてブログのカテゴリリストを取得して、投稿ページ (HTML)上にカテゴリのプルダウンを表示しようと試みている のですが、JS(JavaScript)からPHPを呼び出しHTML上に出力する 際にPHPファイルにincludeがあるとjavascriptエラーとなって しまいます。 ちなみに参考にしたホームページはこちらです。 http://www.res-system.com/item/383 PHPソース(init.php)↓ <?php include_once('entry.php'); // ←エラーの箇所 // ヘッダ header("Content-Type: application/x-javascript; charset=UTF-8"); // インスタンス生成 $obj = new XMLComm(); // 初期設定 $obj->XMLComm(); // カテゴリ取得 echo "document.write(\"$obj->getCategories()\")"; ?> HTMLソース(entry.html)↓ <HTML> <HEAD> <TITLE>BLOG ENTRY</TITLE> </HEAD> <BODY> ブログエントリー</br> <script type="text/javascript" src="/init.php"></script> </BODY> </HTML> ちなみに、include等が無い状態で任意の文字で試したのですが こちらはきちんと表示されます。 javascriptでincludeなど呼び出しているphpを起動することは できないのでしょうか… 解決策、別案などありましたらご教授いただけたら幸いです。 phpを始めたばかりの初心者で、質問自体おかしい点があるかも しれませんが、、どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • JAVAで出力した値をHTMLで使う

    HTMLのフォームからJAVAに値を渡し、 JAVAで処理をしたものをHTMLのアプレットに 表示する方法は分かりました。 でも、アプレットでの出力だと、HTMLの JavaScriptで扱えません。 JAVAの値をHTMLのフォームなどに出力する方法が あれば教えてください。

  • HTML出力後の<body>内を分析

    出力後のHTMLを テキストボックス内に表示させたいです。 $a ='<?php echo'こんにちは'; ?>'; <input type="text" value="$a"> だと、<?php ?>まで表示されてしまいますよね?? こんにちは だけ表示させる方法はないでしょうか??

    • ベストアンサー
    • PHP
  • HTMLからPHPを呼び出すには

    PHP4で動いていたカウンターを、訳あってPHP3に移植することになりました。 HTMLには<img src="hoge.php" width="1" height="1">を埋め込み、hoge.phpファイルのほうには <?php $fp = fopen( "/home/sites/home/access/logs/now", "w" ); fwrite( $fp, date("Y年m月d日 A h時i分s秒") ); fclose($fp); ?> としていましたが、PHP4では問題なく動作していたものが、PHP3ではうまく保存してくれませんでした。 そこで <script language="JavaScript" src="hoge3.php"> </script> としてみたら無事保存できるようになったのですが、今度は、JavaScriptの構文エラーが出るようになってしまいました。 他に良い呼び出し方法はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • includeで読み込んだ内容を変数にいれたい

    includeで読み込んだファイル内容を変数に格納する方法はありますか? 動的ページをHTMLファイルで出力したいと思っています。 例: if(!file_exists("$file")){ mkdir("$file",0755); } $fp = fopen("$file/index.html","w") flock($fp, LOCK_EX); $hoge = include("./hoge.php"); fputs($fp,'<html>'."\n"); fputs($fp,'$hoge'."\n"); fputs($fp,'</html>'."\n"); この様に、$hogeの中に読み込んだファイルを書き込みたいのですが、 うまくできません。 この様な方法で変数にいれるのは可能でしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • javascript name="hoge"等に記号を使いたい

    javascriptで、クリックすると値が変わるというものを作っています。 クリックすると以下の処理を行います。 ●java script側● form1.hoge.value = 1; すると、HTMLのhogeの値が変わるというものです。 ●HTML側● <form name='form1'>  <input size='10' type='text' name='hoge' value='0'> </form> しかし、実際には、phpの処理の都合もありまして ●java script側● form1.hoge[].value = 1; ●HTML側● <form name='form1'>  <input size='10' type='text' name='hoge[]' value='0'> </form> と、カッコ[]をつけたいのですが、カッコをつけると javascriptが、エラーになってしまい、うまく動作しません。 エスケープの問題かなと思い form1.hoge\[\].value 等 試しましたが、うまくいきません。 どうすれば、カッコのついたnameに対して、 javascriptが、要求を送ることができるのでしょうか?

  • 【PHP】FTP関数でのバックアップスクリプトについて

    プログラミング歴一ヶ月の超初心者ですが、スクリプト作成に躓いてしまい、どうしても分からなくて困っています…。 下の方にあるPHPスクリプトは、「複数ホストにおいてそれぞれの設定にしたがってバックアップを取るスクリプト」です。 サーバー、クライアント、共にwin2000、iisです。 さて、質問は3つあります。 ◆◆◆1つ目の質問◆◆◆ 現在3つのホストで試行しているのですが、一つ目のホストでは殆どエラーは出ないのに、二つ目と三つ目のホストではどうしても数百あるファイルの内、何かしらの一つがfopenに失敗します。エラーは例えば次の通りです。 Warning: fopen(【ファイルパス(毎回違うものが引っかかります…)】) [function.fopen]: failed to open stream: No such file or directory in D:\WORK_DIR\BU\bu.php on line 183 Warning: fclose(): supplied argument is not a valid stream resource in D:\WORK_DIR\BU\bu.php on line 187 Warning: fopen(【ファイルパス】) [function.fopen]: failed to open stream: No such file or directory in D:\WORK_DIR\BU\bu.php on line 183 Warning: fclose(): supplied argument is not a valid stream resource in D:\WORK_DIR\BU\bu.php on line 187 Warning: fopen(【ファイルパス】) [function.fopen]: failed to open stream: No such file or directory in D:\WORK_DIR\BU\bu.php on line 183 Warning: fclose(): supplied argument is not a valid stream resource in D:\WORK_DIR\BU\bu.php on line 187 Warning: fopen(【ファイルパス】) [function.fopen]: failed to open stream: No such file or directory in D:\WORK_DIR\BU\bu.php on line 198 Warning: fclose(): supplied argument is not a valid stream resource in D:\WORK_DIR\BU\bu.php on line 200 Warning: unlink(【ファイルパス】) [function.unlink]: No such file or directory in D:\WORK_DIR\BU\bu.php on line 209 一応スクリプトの中で再試行も試みているのですがイマイチ機能してるのかわかりません…。 それと、FFFTPやIEでこのエラーに引っかかったファイルには別に普通にアクセスできます。 どうやったらこのエラーが無くなるのかわからなくて困っています。教えて頂けたら嬉しいです。 ◆◆◆2つ目の質問◆◆◆ 効率化についてです。 一応、ZIP化する機能を後に追加したので、「ローカルにファイルをダウンロード→そのファイルを読む→ZIP化」の手順を、「サーバー上のファイルを読む→ZIP化してローカルに保存」の様に簡略化しようと思っているのですが、それくらいしか思いつかなくて…。良かったら効率化についてご指摘いただければと思います。少しでも実行時間を短くしたいです。 ◆◆◆3つ目の質問◆◆◆ スクリプトの中盤辺りで、ダウンロード予定数と成功数を出力する試みがあるのですが、現時点では成功数のカウントは正確に反映されそうにないので、直すつもりです。とりあえず現在の様子だと、予定数、成功数ともに同じ数がカウントされるわけですが、これが困ったことに実際のダウンロード数と少し違うのです…。 一つ目のホストでは全く問題ないのですが、二つ目と三つ目では、生成されたZIPを展開してファイル数、フォルダ数を調べると、サーバー上のそれよりも多少多いのです…。ダウンロードリストもログで残しているのですが、これは数はずれていません。このリストと同じ配列でダウンロードも処理しているのですが…どうにもこうにも全く理由がわからなくて困っています。 ◇◇◇ こういう時はこうする、というような定石も全く持っていないので本当に一苦労です。そういう部分に関しても、色々遠慮せずにご指摘願えたら嬉しいです。 長々とすみません。よろしくお願いいたします。

    • 締切済み
    • PHP

専門家に質問してみよう