web-dev-qa-db-ja.com

HTMLにPHP変数(HTML外PHPコード)

私はphpに慣れていないので、次のようなことができるかどうか疑問に思っています。

<?php
 ...
 magicFunctionStart();
?>

<html>
   <head>...</head>
   <body>...</body>
</html>

<?php
 $variable = magicFunctionEnd();
 ...
?>

私が今使用しなければならないのは

<?php
 ...
 $variable = "<html><head>...</head><body>...</body></html>"
?>

これは煩わしく読みにくいものです。

25
Maksim Vi.

「出力バッファリング」を試しましたか?

<?php
 ...
 ob_start();
?>

<html>
   <head>...</head>
   <body>...<?php echo $another_variable ?></body>
</html>

<?php
 $variable = ob_get_clean();
 ...
?>
68
Wabbitseason

heredoc 構文が欲しいと思います。

例えば:

$var = <<<HTML
<html>
   <head>
random crap here
</html>
HTML;
15
eplawless

あなたが何を成し遂げようとしているのか本当にわかりませんが、 heredoc構文 のようなものが役立つかもしれません:

<?
$variable = <<< MYSTRING

<html>
   <head>...</head>
   <body>...</body>
</html>

MYSTRING;

ただし、HTMLテンプレートを作成しようとしている場合は、 SmartyDwoo または Savant などの実際のテンプレートエンジンを入手することを強くお勧めします。

4
CMS

OKあなたがやりたいことはファッションで可能です。

HTMLのブロックを単純にphp変数に割り当てたり、関数で割り当てることはできません。ただし、希望する結果を得るにはいくつかの方法があります。

  1. テンプレートエンジンの使用を調査します(とにかく価値があるので、これを行うことをお勧めします)。 smarty を使用していますが、他にもたくさんあります
  2. 2つ目は、出力バッファを使用することです。

あなたが抱えている問題の1つは、ページにあるすべてのHTMLがすぐにクライアントに送信されることです。これは、PHPで変数として使用できないことを意味します。ただし、関数ob_startおよびob_end_fushを使用すると、必要な機能を実現できます。

例えば

<?php 
  somesetupcode();
  ob_start();  ?>
<html>
<body>
html text
</body>
</html>
<?php
  //This will assign everything that has been output since call to ob_start to your    variable.
  $myHTML = ob_get_contents() ;
  ob_end_flush();

?>

これが、php docsの output buffers を読み取るのに役立つことを願っています。

1
Toby Allen

私は常に[〜#〜] avoid [〜#〜]バッファ関数(ob_start、またはその他)代替がある場合は常に(同じシステム内の部品と競合する場合があるため)。

私が使う:

function Show_My_Html()
{ ?> 
    <html>
      <head></head>
      <body>
         ...
      </body>
    </html>
    <?php 
}


...
//then you can output anywhere
Show_My_Html();
0
T.Todua