家・車以外で、人生で一番奮発した買い物

こんばんわ。
AというファイルにBというファイルを読みこもうと思うのですがうまくいきません。


■a.php
<?php
// ファイルを読み込み専用でオープンする
$fp = fopen('b.php', 'r');
// 終端に達するまでループ
while (!feof($fp)) {
// ファイルから一行読み込む
$line = fgets($fp);
// 読み込んだ行を出力する
print $line;
// <br>の出力
print "<br>";
}
// ファイルをクローズする
fclose($fp);
?>



■b.php
<div class="title">コンテンツ</div>
<?php
$amin = 1; //最小値
$amax = 4; //最大値
$randevent = rand($amin,$amax); //値を表示
if ( $randevent == 1)
echo "たちつてと";
//
else if ( $randevent == 2)
echo "さしすせそ";
//
else if ( $randevent == 3)
echo "かきくけこ";
//
else if ( $randevent == 4)
echo "あいうえお";
?>

と、二つのファイルはこのような内容です。
もちろんincludeやリクワイヤーで取り込めばすむのでしょうが、fopenで取り込んで表示させたいのです。
このままの文章だとPHPの構文ごとHPに表記されてしまいます。
Printにしているからでしょうか?

fopenでPHPの機能ごと取り込むには方法はありませんでしょうか?
includeだと取り込んだ際にPHP構文の置換や修正がきかなくて困るんです。
fopenで取り込むとPHP構文を「あいうえお」の部分を「なにぬねの」にstr_replaceで置換できると思ったのです。

a.phpの中にfopenを使いb.phpの中のPHP構文を機能させる方法はありませんか?

A 回答 (2件)

b.phpをファイル読み込みしているのでそのまま吐き出されています。


PHP構文だとしてもそれは既に文字列として扱われます。

a.phpから値をいじりたいというのなら変数をグローバルアクセス化して
includeした方が速いですね。

a.php
<?php
include "b.php";

$abc = "なにぬねの";

test();
?>

b.php
<?php
$abc = "あいうえお";

function test(){
global $abc;

echo $abc;
}
?>
    • good
    • 0
この回答へのお礼

ありがとうございます。
うまく質問ができなかったのですが、
bというファイルをを取り込んで、
とりこんだBのPHP構文を修正したいのです。
アドバイスいただけると幸いです。

お礼日時:2006/03/11 17:29

> bというファイルをを取り込んで、


> とりこんだBのPHP構文を修正したいのです。

Bファイルを実行とかではなくて、単純にBファイルを書き換えたいという事ですか?

それならBファイルを全部配列等で取得して
対象となる場所だけ書き換えてから
Bファイルをfwriteを使って再度作成すれば良いと思います。

それを実行させたいなら、上記処理を行った後に
includeすれば良いでしょう。

テキトーに作ってみました。
【a.php】
<?php
$bdat = file("b.php");
$fp = fopen('b.php', 'w');

//「あいうえお」を「なにぬねの」に置換し、ファイルを書き換える
foreach ($bdat as $key => $value) {
$bdat[$key] = mb_ereg_replace("あいうえお", "なにぬねの", $value);
fwrite($fp, $bdat[$key]);
}
fclose($fp);
?>

この回答への補足

ありがとうございます。
これなら
$amax = 4; //最大値
の数値を2や3にもできますね。
応用が利きそうで助かりました。

ただ、<b.php>は<a.php>以外のファイルからも使いまわしたいので上書き保存より別名で保存のようなことはできませんか?

補足日時:2006/03/12 22:33
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報