PHP初心者です。

mb_ereg_replaceを使い下記のようなテキストの%%start%%から%%end%%までを違う文字に置換したいのですが上手く行きません。
上手くいくコードを教えてください。
----------x.txt
%%start%%
あいうえお
%%end%%
-----------

以下のコードを書いて試してているのですが「あいうえお」という結果になって欲しいのに全部表示されてしまいます・・・。
---------------------php
$fp = fopen("x.txt", "r");
$msg = "";
while ($x = fgets($fp)) {
$x = mb_ereg_replace("%%start%%[\\r\\n](.*)[\\r\\n]%%end%%","\\1",$x, "m");
$msg .= $x;
}
var_dump($msg);

回答の条件
  • 1人3回まで
  • 登録:2007/04/19 11:28:47
  • 終了:2007/04/19 12:09:36

ベストアンサー

id:GEN111 No.1

GEN111回答回数472ベストアンサー獲得回数582007/04/19 12:01:20

ポイント60pt

fgets は一行ずつ読み込むので while ループの中で x.txt は「%%start%%」「あいうえお」「%%end%%」に分割されて mb_ereg_replace に渡されることになり、パターンにマッチしません。

while ($x = fgets($fp)) {
  $msg .= $x;
}
$msg = mb_ereg_replace("%%start%%[\\r\\n](.*)[\\r\\n]%%end%%","\\1",$msg, "m");

のようにするか、file_get_contents で全体を取得して、

$msg = file_get_contents('x.txt') ;
$msg = mb_ereg_replace("%%start%%[\\r\\n](.*)[\\r\\n]%%end%%","\\1",$msg, "m");

のようにするのがよいかと思います。

id:php-beginner

ありがとうございます!

解決しました。

2007/04/19 12:08:10

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません