簡體   English   中英

PHP:如何將HTML代碼和PHP代碼放入PHP變量中?

[英]PHP: How can I put HTML Code with PHP Code within into a PHP Variable?

我在PHP中有一個關於"'的問題。我必須將一個完整的<li>元素放入一個PHP變量中,但這是行不通的,輸出是完全錯誤的...

    $list = 
"
    <li class=\"<?php if($info[1] < 700) {echo \"half\";} else {echo \"full\";} ?>\">

        <div class=\"onet-display\">

        <?php if ($image = $post->get('image.src')): ?>
            <a class=\"onet-display-block\" href=\"<?= $view->url('@blog/id', ['id' => $post->id]) ?>\"><img class=\"onet-thumb\" src=\"<?= $image ?>\" alt=\"<?= $post->get('image.alt') ?>\"></a>
        <?php endif ?>

        <h1 class=\"onet-thumb-title\"><a href=\"<?= $view->url('@blog/id', ['id' => $post->id]) ?>\"><?= $post->title ?></a></h1>
        <div class=\"uk-margin\"><?= $post->excerpt ?: $post->content ?></div>

        </div>

    </li>
";

是否因為HTML代碼中包含PHP內容? 我該如何解決?

有人可以幫我解釋一下為什么這行不通嗎?

<?php ... <?php

由於您的字符串包含PHP標記,因此我想您希望對它們進行評估。 另一個PHP標記中的開放PHP標記被解釋為PHP代碼的一部分。 例如,以下輸出<?php echo time();

<?php echo "<?php echo time();";

有幾種方法可以從PHP表達式構建PHP字符串。

級聯

您可以創建返回字符串的函數,並將對它們的調用與其他字符串連接起來:

function some_function() {
  return time();
}

$html = "<li " . some_function() . ">";

或使用sprintf

$html = sprintf('<li %s>', some_function());

評估

另一種方法是使用eval ,但我不推薦使用它,因為它允許執行任意PHP代碼,並可能導致意外行為。

輸出緩沖

如果您將PHP作為模板引擎運行,則可以使用輸出控制功能 ,例如:

<?php ob_start(); ?>

<li data-time="<?= time() ?>"> ...</li>

<?php
$html = ob_get_contents();
ob_end_clean();
echo $html;

輸出量

<li data-time="1483433793"> ...</li>

此處文檔語法

但是,如果應該按原樣分配字符串,請使用here文檔語法

$html = <<<'HTML'
<li data-time="{$variable_will_NOT_be_parsed}">...</li>
HTML;

要么

$html = <<<HTML
<li data-time="{$variable_WILL_be_parsed}">...</li>
HTML;

您想將一些html存儲到變量中。

您的來源應(如果尚未)以

<?php

然后,您開始構建$list的內容。

從您的代碼開始,最近的解決方法是通過附加字符串來構建$list

<?php
$list = "<li class=";

if($info[1] < 700)
{
    $list .= "\"half\"";  // RESULT: <li class="half"
}
else
{
    $list .= "\"full\"";  // RESULT: <li class="full"
}

// ...and so on...

現在要注意幾件事:

$list .= "...$list = $list . "...的縮寫$list = $list . "...

哪里了. 點運算符連接兩個字符串。

第二件事, 您可以通過混合使用單引號和雙引號來使代碼更易於閱讀

在PHP中使用雙引號,在生成的HTML中使用單引號:

<?php
$list = "<li class=";

if($info[1] < 700)
{
    $list .= "'half'";  // RESULT: <li class='half'
}
else
{
    $list .= "'full'";    // RESULT: <li class='full'
}

// ...and so on...

這樣,您就不必轉義每個雙引號

我認為你必須像這樣工作

$test = "PHP Text";

$list = "<strong>here ist Html</strong>" . $test . "<br />";  
echo $list;

暫無
暫無

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

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