こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

fopenでファイルを読み込み、その取り込んだファイルを置換や修正したい。

こんばんわ。
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構文を機能させる方法はありませんか?

投稿日時 - 2006-03-10 01:08:04

QNo.2018877

すぐに回答ほしいです

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

b.phpをファイル読み込みしているのでそのまま吐き出されています。
PHP構文だとしてもそれは既に文字列として扱われます。

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

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

$abc = "なにぬねの";

test();
?>

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

function test(){
global $abc;

echo $abc;
}
?>

投稿日時 - 2006-03-10 01:28:06

お礼

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

投稿日時 - 2006-03-11 17:29:25

ANo.1

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

> 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);
?>

投稿日時 - 2006-03-12 00:07:27

補足

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

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

投稿日時 - 2006-03-12 22:33:11

あなたにオススメの質問