簡體   English   中英

PHP包含變量內部

[英]PHP include inside of a variable

我有一個控制頁面輸出的函數:

$page = "<div class='media-title'><h2>{$title}</h2></div><div class='media-image'>{$image}</div><div class='media-desc'>{$desc}</div>";

我想在$page變量中定義的html中包含一個文件“box.php”。 我試過這個:

$page = "<div class='media-title'><h2>{$title}</h2></div><div class='media-image'>{$image}</div><div class="inlinebox">" . include("box.php"); . "</div><div class='media-desc'>{$desc}</div>";

......但它沒有用。 我怎樣才能在變量中加入一個php include?

來自php.net

// put this somewhere in your main file, outside the
// current function that contains $page
function get_include_contents($filename) {
    if (is_file($filename)) {
        ob_start();
        include $filename;
        $contents = ob_get_contents();
        ob_end_clean();
        return $contents;
    }
    return false;
}

// put this inside your current function
$string = get_include_contents('box.php');
$page  = '<div class="media-title"><h2>{$title}</h2></div>';
$page .= '<div class="media-image">{$image}</div>';
$page .= '<div class="inlinebox">' . $string . '</div>';
$page .= '<div class="media-desc">{$desc}</div>';

我怎樣才能在變量中加入一個php include?

# hello.php
<?php
  return "Hello, World!";
?>

# file.php
$var = include('hello.php');
echo $var;

我通常會避免這樣的事情。

首先,不要在語句中使用分號。
其次,將include語句包裝在括號中。

$page = "<div class='media-title'><h2>{$title}</h2></div>
<div class='media-image'>{$image}</div><div class="inlinebox">" . 
(include "box.php") . "</div><div class='media-desc'>{$desc}</div>";

最后:在“box.php”文件中,您需要執行以下操作:

<?php
ob_start();

// your code goes here

return ob_get_clean();

編輯:有關在函數競賽之外調用return的一些信息: PHP Manual - Return

編輯:

不知道這是否有用,但我認為包含一個文件來獲取一段HTML,不是一個好的選擇。 它不可擴展。 你可以試試像MVC這樣的東西。 您可以要求您的控制器重新定義您想要的內容。

$view = $controler->getElement('box');

$page = "<div class='media-title'><h2>{$title}</h2></div><div class='media-image'>{$image}</div><div class="inlinebox">" . $view . "</div><div class='media-desc'>{$desc}</div>";

嘗試解耦代碼。

我建議你看一些MVC框架,在我看來,最好的是CakePHP。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM