fopen()などで下記のような内容のhoge1.phpというPHPファイルを新規作成するとします。
hoge1.php
<?php
<html>
×××
</html>
?>
以下のhoge2.phpの変数aの内容が上の×××の部分にプラウザで表示するようにしたいのですが、後で変数aの内容を変更してもそれがhoge1.phpに反映されるようにすることってできるでしょうか?
hoge.2php
<?php
$a='ほげほげ';
?>
たとえば、プラウザで「ほげほげ」と表示されてるhoge1.phpを、hoge2.phpの変数a="はてな"と変更するとプラウザでも「はてな」と表示されるようにしたいということです。
Vista、IE、Firefox、最新のXampp、PHP5、 EclipsePDT2を使ってます。
以上よろしくお願いします。
こんにちは。
あ、私のだと、だいるが入れ変わってしまってましたかね。。。
hoge2.php
$a='ほげほげ';
?>
で、
hoge1.phpで$aを表示する場合は、
<html>
</html>
です。
$content="
というのは変数にその行を文字列として入れているので、動きません。
ですので、上記のhoge1.phpの例である
<html>
</html>
をfopenして書きこみで開いたhoge1.phpという名称のファイルに書き込んでください。
ブラウザ上でhoge1.phpを表示させるとはでません。
プログラムで置き換えていますので。
解釈が違ったらすいません。
セッションでできるかなと思います。
hoge1で値を変数に代入するのに、直書きしていますが、
フォームからgetやpostで対応すればいいかと。
その場合は、えすけーぷなどセキュリティを気にしてください。
ご要望に沿っていれば、いいのですが。。
% cat hoge1.php
session_start();
$_SESSION['ans']="ほげほげ";
?>
<html>
<body>
</body>
</html>
% cat hoge2.php
session_start();
?>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<body>
hogeはでした。
</body>
</html>
ご回答ありがとうございます。
大変参考になりました。
セッションを使わない方法を知りたいので他の方からのご回答もお待ちしてます。
hoge1.php の内容が本当に
<?php <html> ××× </html> ?>
であるなら、新規に作ったときの内容を動的に書き換える手段はありません。
(全角の '<' で始まっていては、PHPスクリプトとして動作しません)
<?php <html> ××× </html> ?>
であるなら、PHPスクリプトとしては動作しますが、<html> はPHPの文法にはありませんからエラーとなってしまい、
> 上の×××の部分にプラウザで表示する
というような事も出来ません。
hoge1.php を実行した時(ブラウザで開いた時)に、ブラウザに渡されるデータが
<html> ××× </html>
である(ブラウザ上の表示は「×××」だけ)ならば、簡単です。
(hoge.2php ではなく hoge2.php であるとします。include するだけなら hoge.2php でも問題無いです)
<?php include 'hoge2.php'; print <<<EOL <html> $a </html> EOL; ?>
PHPで無くても良ければ、javascript でって方法もあるでしょうが、hoge1.php で得られるHTML文書に含めなくてはならないので、例示のものとかなり違ったものとなります。
ブラウザ上では変わりませんが。
ご回答ありがとうございます。
>全角の '<' で始まっていては、PHPスクリプトとして動作しません。
全角はわざとです。それをちゃんとことわっておくべきでした。
以前、半角でタグを書いたらひどいことになってしまったので、このような書き方をしました。以下、タグの開始と終了タグは全角とさせていただきます。
また、hoge.2phpはhoge2.phpの書き間違いです。いずれもご指摘ありがとうございました。
質問文にはもう一箇所誤りがあります。
hoge1.phpの×××は変数(仮に$contentとします)に格納されており、
それが新規作成されたhoge1.phpに反映されるという仕組みになっています。
例えば、$content="人力"だとすれば、hoge1.phpは下記のようになります。
<html>
人力
</html>
<?phpと?>はありませんでした。
$content="<?php include 'hoge2.php'; echo $a; ?>"とすると、
プラウザ上で「<?php include 'hoge2.php'; echo $a; ?>」とそのまま表示されてしまいます。
・・・とここまで書いて、まだ把握してないこともあるのではないかと思うようになりました。PEARを使ってるのでコードも完全に理解してません。質問が不適切である可能性がありますので、今後ご回答いただく方はその点をご了承の上、推測混じりにご回答ください。結果として的はずれな回答となっても、それは私の落ち度のせいですし、今後の参考になりますので、気にしないでご回答くださいますようお願いします。私の方でさらに補足すべきことがありましたら、解答欄かコメントに記述します。
こんにちは。
あ、私のだと、だいるが入れ変わってしまってましたかね。。。
hoge2.php
$a='ほげほげ';
?>
で、
hoge1.phpで$aを表示する場合は、
<html>
</html>
です。
$content="
というのは変数にその行を文字列として入れているので、動きません。
ですので、上記のhoge1.phpの例である
<html>
</html>
をfopenして書きこみで開いたhoge1.phpという名称のファイルに書き込んでください。
ブラウザ上でhoge1.phpを表示させるとはでません。
プログラムで置き換えていますので。
解釈が違ったらすいません。
再度のご回答、丁寧にありがとうございます。
私の環境だと<html>と</html>の間が表示されてないかもしれません。
もしdoroponさんの環境で意図した回答と違うものが表示されてるようでしたらコメント欄にフォローください。
これでよければそのままで結構です。
今回は私が適切に質問し切れてないようです。
いったん締め切り、整理した後あらためて再質問させていただきます。
再度のご回答、丁寧にありがとうございます。
私の環境だと<html>と</html>の間が表示されてないかもしれません。
もしdoroponさんの環境で意図した回答と違うものが表示されてるようでしたらコメント欄にフォローください。
これでよければそのままで結構です。
今回は私が適切に質問し切れてないようです。
いったん締め切り、整理した後あらためて再質問させていただきます。