• 締切済み

ヒアドキュメントの中で別ファイルをインクルード

PHPでヒアドキュメントの中で別ファイルをインクルードする方法はどのように処理するのでしょうか? sample.txt <p>サンプルテキストからの文字</p> ------------------------------------ sample.php $sample = <<<_EOM_ <html> <head> </head> <body> サンプルサンプル<br> *ここにsample.txt内のhtmlソースをインクルードしたい。 </body> </html> _EOM_; 以下省略(echoとかで出力)

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

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.3

以下の方法で、includeと同じ結果が得られます <? $include=file_get_contents("sample.txt"); $sample = <<<_EOM_ <html> <head> </head> <body> サンプルサンプル<br> $include </body> </html> _EOM_; echo $sample; ?>

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

file_get_contentsなどで変数にいれるのがてっとりばやい <? $fname='sample.txt'; $content = file_get_contents($fname); $sample = <<<_EOM_ <html> <head> </head> <body> サンプルサンプル<br> {$content} </body> </html> _EOM_; print $sample; ?>

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

出来ないです。 前半のヒアドキュメント、別ファイルを読み込んだ文字列、後半のヒアドキュメントを連結しましょう。

関連するQ&A

  • ヒアドキュメントを中断してincludeする方法とは?

    ホットペッパーAPIを使ってサイトを作っています。まだ知識が浅く分からないことが多いのですが、下記について教えて下さい。 <?php //サイト設定 $site['title'] = "APIサンプルサイト"; $site['url'] = "http://●●.jp"; $site['mojicode'] = "Shift_JIS"; $site['info'] = "ホットペッパービューティーAPIのサンプルです"; //XMLデータ取得用ベースURL $req = "​http://webservice.recruit.co.jp/beauty/salon/v1/";​ //リクエストパラメータ設定 $name = "◎◎"; $name_kana = "××"; //XMLデータ取得用リクエストURL生成 $req .= "?name=".$name."&name_kana=".$name_kana; $xml = simplexml_load_file($req) or die("XMLパースエラー"); //HTML出力 echo <<<HTML <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>{$site['title']}</title> </head> <body> <h1>{$site['title']}</h1> <hr> {$site['info']} <hr> {$xml->salon->name}<br> {$xml->salon->name_kana}<br> </body> </html> HTML; ?> ------------------------------------ (APIキーを省略しています) 上記の様に作成したページに <?php include_once '../include/commons.php'; ?> を入れて別のphpファイルを参照したいのですが、別の質問で 「表示したい位置でヒアドキュメントを中断して、そこでinclude 」 と教えて頂きました。Googleでいろいろと検索して調べたのですが、ヒアドキュメントを中断してincludeする方法が分かりません。 知識不足なのは承知ですが、どういうキーワードで調べたらいいかもよく分からない状況でして・・。 具体的にどう作業すればいいか教えて頂けないでしょうか。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 外部ファイル記述内容をヒアドキュメント上で実行

    題名の通りなのですが、説明が難しいです.. 外部のテキストファイルを読み込み、もしPHPスクリプトが記述されていたら、それを実行させたいです。 例えば、下記のようなテキストファイルをディレクトリにアップし・・ (テキストファイルtext.txt内容) テスト,これはテストです。 <?php echo (date("Y年m月d日")); ?> テスト2,これはテストです2 下記のようなスクリプトがあったとして・・ (PHP実行ファイル内容) <?php $text = file_get_contents("text.txt"); $text = explode("\n", $text); $num0 = explode(',', $text[0]); $num1 = explode(',', $text[1]); $subject0 = $num0[0]; $subject1 = $num1[0]; $body0 = $num0[1]; $body1 = $num1[1]; echo <<<EOD <p>{$subject0}<br>{$body0}</p> <p>{$subject1}<br>{$body1}</p> EOD; ?> 実行すると、出力は・・ (実行結果) <p>テスト<br>これはテストです。 <?php echo (date("Y年m月d日")); ?></p> <p>テスト2<br>これはテストです2</p> ・・というようになるかと思います。 ようは、<?php echo (date("Y年m月d日")); ?>がそのまま文字列として出力されるだけです。 これを、下記のような出力結果が得られるようにしたいです・・ (欲しい実行結果) <p>テスト<br>これはテストです。 2016年11月10日</p> <p>テスト2<br>これはテストです2</p> 何か方法はありますでしょうか? ご教示頂けましたら幸いです。

    • ベストアンサー
    • PHP
  • javascriptで外部ファイルをヒアドキュメントっぽくインクルード

    javascriptで外部ファイルをヒアドキュメントっぽくインクルードしたいのですが、うまくいきません。どこがいけないのでしょうか? ■JavaScriptでヒアドキュメントを使うライブラリを作った。 - こせきの技術日記 http://d.hatena.ne.jp/koseki2/20080112/jsheredoc を参考にしているのですが、掲載内容が理解できません。 とりあえず、下記記述としたところ、 外部ファイルをインクルードでき、表示もされるようにはなったのですが、 Firefoxで読み込み完了とならず、いつまで経っても読み込み中のままとなってしまいます。(恐らく完全に正常に処理されているのではなく、どこかの処理で引っかかったままなのだと思います) どう直せばよいのでしょうか? ■index.html <script type="text/javascript" src="heredoc.js"></script> </head> <body> <script type="text/javascript"> var callback = function(values) { document.write(values.str); } Heredoc.load("./templates_02.txt", callback); </script> </body> ■templates_02.txt var str=<<EOT sssssss ddddddd2 <a href="http://www.yahoo.co.jp/">YAHOO</a> EOT

  • ヒアドキュメントの中で関数を呼び出す方法

    すべての携帯コンテンツをphpで下記のように作成しており、絵文字を使いたいと思いますが、ここの絵文字変換プログラムを多少変更してPHP内で<?php emoji(絵文字番号)>って呼び出しできるようになったのですが、すでにあるPHPコンテンツはヒアドキュメントからecho出力しており、ヒアドキュメント内から関数(絵文字番号)って呼び出すことができません。何かいいアドバイスか他の処理方法をできれば簡単にコードを書いて教えていただけると幸いです。お願いします。 関数----------------- 省略 function emoji($data) { global $agent,$emoji_array; if(preg_match("/[0-9]{1,3}/", $data) && is_numeric($data) && 0 < $data && $data < 253) { switch(mobile($agent)){ case "i"; $put = $emoji_array[$data][1]; break; case "e"; if (preg_match("/[^0-9]/", $emoji_array[$data][2])) { $put = $emoji_array[$data][2]; } else { $put = "<img localsrc=\"".$emoji_array[$data][2]."\" />"; } break; case "s"; if (preg_match("/^[A-Z]{1}?/", $emoji_array[$data][3])) { $put = "\x1B\$".$emoji_array[$data][3]."\x0F"; } else { $put = $emoji_array[$data][3]; } break; case "p"; $put = "[PCでは絵文字は表示されません]"; break; } echo $put; } else { echo "[Error!]\n"; } } ----------------------------------------- &contents = <<<HTML <html> <head> </head> <body> コンテンツコンテンツ<br> →ここで関数(絵文字番号)って呼び出したい! </body> </heml> HTML;

    • 締切済み
    • PHP
  • インクルードファイル内にPHPコードを挿入してecho表示

    処理が異なる2つのPHPファイルを一つのテンプレートファイルから index.phpファイルへ表示させたいのですが、テンプレートファイル内に css_echo.phpをインクルードさせたコードを書くとそのままソース上に表示されてしまいます。 どのような方法をとればいいかアドバイス下さい。 ■条件としては、 ・css.php/css_echo.phpの処理ファイルはそれぞれ別ファイルとしたい ・index.phpファイルは <html> <head> <?php require_once('./css_echo.php');//ブラウザを判別してCSSファイルを出力 ?> </head> <body> <?php $temp = "./temp.html"; //このページのテンプレートファイル名パス require_once('./echo.php'); ?> </body> </html> には書かない方法で対応したいです。 ファイルは以下です。 ---------------------------------------------------------------------- テンプレートファイル(temp.html) <html> <head> <!--問題はここです。 --> <?php require_once('./css_echo.php');//ブラウザを判別してCSSファイルを出力 ?> </head> <body> サンプル表示{この中はブラウザ判別して表示・非表示にする} </body> </html> 処理PHPファイル(echo.php) <?php $htm = file_get_contents($temp); echo preg_replace('/[{}]/', '', $htm);// {}内を削除して表示 ?> ブラウザ判別用ファイル(css_echo.php) <?php //実際にはこの前にブラウザ判別し処理コード(省略) echo "<link rel=\"stylesheet\" href=\"$dir$pc\" type=\"text/css\">\n"; ?> メイン表示用PHPファイル(index.php) <?php $temp = "./temp.html"; //このページのテンプレートファイル名パス require_once('./echo.php'); ?> ------------------------------------------------------------------------

    • 締切済み
    • PHP
  • PHP でデータファイルを別にすると文字化け

    PHPの初心者ですが、文字化けで困っています。 index.php には以下の内容を入れています。 <?php include("ja.php"); echo '<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <p>'.$WELCOME_TEXT.'</p> </body> </html>'; ?> ja.php には以下の内容を入れています。 <?php $WELCOME_TEXT = 'ようこそ'; ?> これでindex.phpを表示させても「????」と出るだけなのですが、どうすれば文字化けがなくなるのでしょう?どちらのファイルもUTF-8のエンコードで保存しています。

    • 締切済み
    • PHP
  • htmlファイルのインクルード

    htmlファイルのインクルード あるページを複数の別のhtmlファイルを読み込んで構成しようと思っています。 以下がソースなのですがFirefoxでは samplesample テストテスト と表示されるのですが、Internet Explorerでは テストテスト のみが表示されsample.htmlが読み込まれません。 何がいけないのでしょうか。 よろしくお願いします。 [index.html] <html> <head> <title>テストページ</title> <script type="text/javascript" src="prototype.js"></script> <script type="text/javascript"> function my_include(id, file) { document.open(); document.write('<div id="' + id + '"></div>'); document.close(); var options = {}; options.method = "get"; options.asynchronous = true; new Ajax.Updater(id, file, options); } </script> </head> <body> <div id="headers"></div> <script type="text/javascript">my_include("headers","sample.html");</script> テストテスト </body> </html> [sample.html] <head> <title>sampleページ</title> </head> <body> samplesample </body> </html> [バージョン情報] Firefox 3.6.3 Internet Explorer 8 prototype.js 1.6.1

    • ベストアンサー
    • HTML
  • インクルードによる不具合

    PHP初心者です。 以下2つのファイルを使って簡単な接続テストを行ってから徐々に 目的のものを作り上げていこうとしたのですが、どうにもうまく動作しません。(2つは同一ディレクトリにある) ・「mysql.php」:DB接続とSQLの発行 ・「test.php」:ブラウザ出力(本体:mysql.php呼び出し元) 実行すると「*** DB/SQLテスト ***」のみブラウザに出力されるため、試しに「mysql.php」で行うDB接続とSQL発行をすべてtest.phpに直接書いてインクルードせず単体で実行したところ、目的の結果が表示されました。 なので問題はインクルード文にあるのだと思うのですが検討がつきません。 どなたかお力をお貸し下さい。 ちなみに以下のコードは参考にしたテキストの例題をもとに見やすくするため余分な処理やエラー処理などを省いたものです。 ■mysql.php <?php class MySQL{ var $m_con; var $m_rows = 0; function MySQL(){ $this->m_con = mysql_connect("ホスト名", "ユーザ名", "パスワード"); mysql_select_db("データベース名", $this->m_con); } function query($sql){ $this->m_rows = mysql_query($sql, $this->m_con); return $this->m_rows; } } ?> ■test.php <html> <head> <meta http-equive="Content-type" content="text/html; charset=utf-8"> <title>SQLtest</title> </head> <body> *** DB/SQLテスト ***<br> <?php include("mysql.php"); $mysql = new MySQL; $sql = "SELECT * FROM staff"; $mysql->query($sql); while($row = mysql_fetch_array($this->m_rows)){ echo $row["id"]; echo $row["name"]; echo "<br>"; } ?> </body> </html>

    • ベストアンサー
    • PHP
  • HTMLで作成したページにPHPでinclude可能なファイルと問題点について

    PHPを始めたばかりの初心者です。よろしくお願いします。 HTMLで作成した各ページにメニュー部分を共通に表示させるためPHPでインクルードさせようと考えています。 実際<?php include("aaa.txt"); ?>を記述して表示することは確認できたのですが、aaa.txtの部分はaaa.htmlではダメなのでしょうか。 実はテスト的にhtmlでやって問題なく表示されたんですが、ソースを表示したら<head>部分とか<body>とか、余計なものまでまるごと全部入ってしまってて大丈夫なのか心配になっちゃったんです。 一般的にはどのようなやり方をされているのか、このやり方で問題ないのか教えてください。 ちなみに当方ビルダーを使用していてテキストファイルを作るには一度htmlで作成したものを必要な部分だけ抜き出して作らなければならず面倒なんです。 わかりずらいかもしれませんがよろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのincludeについて

    お世話になります。 Apache/2.2.3 PHP5.1.6 のレンタルサーバを利用しています。 httpdocs   |___lib   |  |___test.php   |___index.php という構造にしています。 -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'lib/test.php'; echo $a; ?> --------------------- 上記の場合、index.phpには 「sample」と表示されます。 -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- 上記の場合、なぜか表示されません。 そこで「http://~~」はincludeできないのかなと思ったのですが -----test.php-------- <?php $a = 'sample'; echo $a; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; ?> --------------------- とすると、なぜか「sample」と表示されました。 この結果から、includeはできているみたいです。 なんとか -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- で「sample」と表示させたくて試行錯誤してみたのですが どうしても解決できません。 お力添えのほどお願いできればと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP