プロが教える店舗&オフィスのセキュリティ対策術

お世話になっております。
質問タイトルにありますように、変数の記述のあるテキストを変数の中にいれたいのですが、元の変数が有効にならないため質問させていただきます。(グーグルで検索しているのですが、どれも解決に至らないので・・)

データベースに変数($text)を含んだテキストを保存した後、以下のような構成のファイルをブラウザでみると、変数($text)は展開されずに、ブラウザ上に$textと表示されてしまいます。

<?php
$text="テスト";

//DB問合わせ
//上記、変数textを含んだテキストをDBから呼び出す

echo $data;//この変数の中に、上記変数($text)が入っている。

?>

以上のような場合、変数($text)を展開させるには、どのようにしたら宜しいのでしょうか?
お忙しい中恐縮ですがアドバイスのほど宜しくお願いいたします。

A 回答 (4件)

データベースに格納されている文字は、例えば、



「私の名前は$textです」

とかといったように、他の文字列の中に、「$text」という変数名を記述しているということですか。

もしそうであれば、データベースから取得されるものは単なる文字列ですので、$textはすでに変数ではなくて、ただの文字です。
これを利用するためには、

<?php
$text = "テスト";

//DB問合わせ
//上記、変数textを含んだテキストをDBから呼び出す

//ここで文字列置換処理
$data = str_replace('$text', $text, $data); //文中の文字列「$text」を変数「$text」に置換

echo $data;//この変数の中に、上記変数($text)が入っている。

?>
このようにしか書けません。
    • good
    • 0
この回答へのお礼

hogehoge78さま

こんばんは。お返事が遅くなってしまい申し訳ありません!

あ~なるほど・・・こういった使い方の発想が出てきませんでした。
ありがとうございます!hogehoge78さまのアドバイスのもと解決することができました!

お礼日時:2010/01/02 22:43

$test = 3;


$data = "test";
echo $$data;

で3って表示されると思うけど使えない?
    • good
    • 0
この回答へのお礼

ts3m-ickwさま

ご親切なアドバイスをありがとうございます。
お!凄い!と思いましたが、今回の質問の解決には結びつけるのが難しいようです。

※他の件でヒントになるようなアドバイスです。ありがとうございます。

お礼日時:2009/12/30 22:06

>//上記、変数textを含んだテキストをDBから呼び出す


これってDBから拾ってきたデータは$dataに入っているってことだよね?
でこの時に$dataの構造は?
DBからの取得したカラム数って一つだけではないよね?
ということは$dataの構造って配列でDBから取得したデータを格納するのが一般的だと思うけどその場合
echo $dataで配列の中身表示なんてできない。
foreachで配列内を一個一個扱うか
見た目なんて気にしないで単純に配列内の情報を表示したいだけならprint_rを利用する。
    • good
    • 0
この回答へのお礼

oraora777さま

ご親切なアドバイスをありがとうございます。
私の説明不足でした。$dataは、以下のようにカラムそのものです。

$data = mysql_result($result, 0, "data");

例えますとこの$dataとは、ブログの記事をイメージして頂けると適切かと思われますが、SNSのような会員制のサイトで、事前に設置してある変数$textには、そのファイルを参照した際にセッション情報が格納され(例えば名前など)、DBに保存されている記事を呼び出した際、変数に格納されたテキスト(この場合、たとえで言う名前)を記事中に表示させたいと考えています。

お礼日時:2009/12/30 21:54

変数というか、変数名の文字列 '$text' をDBに格納・検索しているのでしょうか?


そうであれば、そういうことをするのが間違いである可能性が高いですね。

変数の値でなく、変数の名前を格納する理由は何ですか?
    • good
    • 0
この回答へのお礼

notnotさま

早速のお返事をありがとうございます。

間違いですか・・。
これまで、このような構成で作ったことはないのですが、DBに保存させる目的は、テキスト内容をブラウザ上で修正するためで、例でいう変数$textに格納される文字列は、ユーザーによって可変する設定となっているため、DBに格納するテキスト内に、$text と変数がそのまま登録するまでに至りました。

以上、上手く説明出来ないのですが、他に上手いやり方はないでしょうか・・・アドバイスに感謝いたします。

お礼日時:2009/12/30 21:20

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