• 締切済み

functionの外にある{$myrow["url"]}をfunction内で使いたいです

<?php $box_template .=<<<eof <a href="{$myrow["url"]}" rel="nofollow"> <img src="{$myrow["image1"]}" width="157" /><img src="{$myrow["image2"]}" width="100" /> </a> eof; mysql_db_read($mysql_query,$box_template); function mysql_db_read($mysql_query,$box_template){ $db = mysql_connect("*******","****","****"); mysql_select_db("******",$db); $result = mysql_query($mysql_query,$db); if ($myrow = mysql_fetch_array($result)) { do { $myrow["url"] = htmlspecialchars($myrow["url"]); $myrow["image1"] = htmlspecialchars($myrow["image1"]); $myrow["image2"] = htmlspecialchars($myrow["image2"]); print $box_template; } while ($myrow = mysql_fetch_array($result)); } else { echo "error"; } }//function ?> $box_templateの{$myrow["url"]}などにmysqlから取ってきたデータを適用したいのですが、{$myrow["url"]}に値が入ってくれません。 どうすればいいのでしょうか。 教えてください。よろしくお願いします。m(_ _)m

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

$box_templateが先行して文字列として確定しているので、 今のままではどうやっても無理でしょうね。 あえてやるなら$box_template内の変数をエスケープしておき、 あとからeval()で値を代入してやるとか・・・ ただこんなことするくらいなら、最初からwhileループの中で テンプレ相当の文字を書けばいい気がするので、微妙です。 以下サンプル <?php $box_template =<<<eof <a href="{\$myrow["url"]}" rel="nofollow"> <img src="{\$myrow["image1"]}" width="157" /><img src="{\$myrow["image2"]}" width="100" /> </a> eof; $myrow["url"]="test.htm"; $myrow["image1"]="test1.jpg"; $myrow["image2"]="test2.jpg"; $box_template=<<<eof print <<<eof_sub {$box_template} eof_sub; eof; $box_template=eval($box_template); print $box_template; ?>

関連するQ&A