- ベストアンサー
変数の中に変数を
- 変数の中に変数をいれたいが、展開されずにブラウザに表示される問題が発生している。
- データベースに含まれる変数を展開させる方法についてアドバイスを求めている。
- 質問文章全体としては、変数の展開に関する問題について詳細を説明している。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
データベースに格納されている文字は、例えば、 「私の名前は$textです」 とかといったように、他の文字列の中に、「$text」という変数名を記述しているということですか。 もしそうであれば、データベースから取得されるものは単なる文字列ですので、$textはすでに変数ではなくて、ただの文字です。 これを利用するためには、 <?php $text = "テスト"; //DB問合わせ //上記、変数textを含んだテキストをDBから呼び出す //ここで文字列置換処理 $data = str_replace('$text', $text, $data); //文中の文字列「$text」を変数「$text」に置換 echo $data;//この変数の中に、上記変数($text)が入っている。 ?> このようにしか書けません。
その他の回答 (3)
- ts3m-ickw
- ベストアンサー率43% (1248/2897)
$test = 3; $data = "test"; echo $$data; で3って表示されると思うけど使えない?
お礼
ts3m-ickwさま ご親切なアドバイスをありがとうございます。 お!凄い!と思いましたが、今回の質問の解決には結びつけるのが難しいようです。 ※他の件でヒントになるようなアドバイスです。ありがとうございます。
- oraora777
- ベストアンサー率20% (56/268)
>//上記、変数textを含んだテキストをDBから呼び出す これってDBから拾ってきたデータは$dataに入っているってことだよね? でこの時に$dataの構造は? DBからの取得したカラム数って一つだけではないよね? ということは$dataの構造って配列でDBから取得したデータを格納するのが一般的だと思うけどその場合 echo $dataで配列の中身表示なんてできない。 foreachで配列内を一個一個扱うか 見た目なんて気にしないで単純に配列内の情報を表示したいだけならprint_rを利用する。
お礼
oraora777さま ご親切なアドバイスをありがとうございます。 私の説明不足でした。$dataは、以下のようにカラムそのものです。 $data = mysql_result($result, 0, "data"); 例えますとこの$dataとは、ブログの記事をイメージして頂けると適切かと思われますが、SNSのような会員制のサイトで、事前に設置してある変数$textには、そのファイルを参照した際にセッション情報が格納され(例えば名前など)、DBに保存されている記事を呼び出した際、変数に格納されたテキスト(この場合、たとえで言う名前)を記事中に表示させたいと考えています。
- notnot
- ベストアンサー率47% (4900/10358)
変数というか、変数名の文字列 '$text' をDBに格納・検索しているのでしょうか? そうであれば、そういうことをするのが間違いである可能性が高いですね。 変数の値でなく、変数の名前を格納する理由は何ですか?
お礼
notnotさま 早速のお返事をありがとうございます。 間違いですか・・。 これまで、このような構成で作ったことはないのですが、DBに保存させる目的は、テキスト内容をブラウザ上で修正するためで、例でいう変数$textに格納される文字列は、ユーザーによって可変する設定となっているため、DBに格納するテキスト内に、$text と変数がそのまま登録するまでに至りました。 以上、上手く説明出来ないのですが、他に上手いやり方はないでしょうか・・・アドバイスに感謝いたします。
お礼
hogehoge78さま こんばんは。お返事が遅くなってしまい申し訳ありません! あ~なるほど・・・こういった使い方の発想が出てきませんでした。 ありがとうございます!hogehoge78さまのアドバイスのもと解決することができました!