• ベストアンサー

外部読み込みテキスト内の変数について

初めてPHPでフォームメールを作成しています。 送信メール内容のフォーマットを 外部テキストで読み込む形にしたいと考え 変数名を含む外部テキストファイルを作成しました。 ファイル名(bace.txt) ++++++++++++++++++++++++++++ お名前 :{$name} メールアドレス:{$from} タイトル :{$title} 内容 :{$body} ++++++++++++++++++++++++++++ これを以下のようにbace.txtを読み込んでmb_send_mailでメールを送っているのですが・・送られたメールを確認すると変数名がそのまま表示されてしまいます。多分文字列として扱われたままでおくられてしまっているのかな?どなたか解決方法分かる方教えて下さいませ~~>< function screen_submit($param) { global $smarty; extract($_SESSION["prm"]); $fp=fopen("bace.txt","r") or die("ファイルのオープンに失敗しました"); $temp=fread($fp, filesize("bace.txt")); $rc = mb_send_mail(MAIL_TO, $title, $temp, "From:$from"); $rc = mb_convert_encoding($rc,"EUC","AUTO"); fclose($fp); if ($rc) { $message = "メール送信が正常終了しました。"; } else { $message = "メール送信が失敗しました。"; } $smarty->assign("message", $message); return TRUE; }

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

include で読み込めばいいと思います。 ファイル名(bace.php) <?PHP $temp = " ++++++++++++++++++++++++++++ お名前 :{$name} メールアドレス:{$from} タイトル :{$title} 内容 :{$body} ++++++++++++++++++++++++++++ "; ?> include 'bace.php'; $rc = mb_send_mail(MAIL_TO, $title, $temp, "From:$from"); $rc = mb_convert_encoding($rc,"EUC","AUTO"); fclose($fp); if ($rc) { $message = "メール送信が正常終了しました。"; } else { $message = "メール送信が失敗しました。"; }

hi6jp
質問者

お礼

ご回答ありがとうございます。 早速試してみたら、うまく動きました。 初めてこういったサイト利用しますが、いいですね~。 こんなに早く問題解決できるとは。 勉強の為にもtext文中に変数が入った場合の処理の仕方を知っている方いればご回答お願いします。 そもそも出来ないのかもしれませんが・・・

その他の回答 (1)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

正規表現は苦手ですが練習に書いてみました。 <?php $name = "namae"; $mail = "aaa@a"; $str = 'name: {$name}, mail: {$mail}'; eval('$result = "' . $str . '";'); echo $result . "<br />"; $result = preg_replace_callback('/{\\$[a-zA-Z_][0-9a-zA-Z_]+}/', 'myEval', $str); echo $result . "<br />"; function myEval($matches) { $var = trim($matches[0], '{$}'); return $GLOBALS[$var]; }

参考URL:
http://php.benscom.com/manual/ja/function.eval.php
hi6jp
質問者

お礼

ご回答ありがとうございます。 ちょっとレベルが高く難しそうです・・・ ですがeval関数を使用すればできそうですね。 まだまだ知識不足なところを実感しました・・ みなさんありがとうございました~これで質問締め切ります~。

関連するQ&A