簡體   English   中英

修復嵌套PHP中的HTML間距問題

[英]Fixing HTML spacing issues from nested PHP

這一直困擾着我的PHP,我從來沒有找到答案。 希望這個例子能夠提供足夠的信息來理解我的問題,因為我不知道如何用文字徹底解釋它。

這里是HTML中的一些PHP,在.php文件中。 這類事情經常發生:

<html>
    <head>
        <!-- whatever -->
    </head>
    <body>
        <section id="content">
            <ul class="errors">
            <?php
            foreach ($errors as $error)
            {
            ?>
                <li><?= $error ?></li>
            <?php
            }
            ?>

我忽略了HTML的結束標記,並使用<?=快捷方式來避免任何不必要的文本。

現在,這是HTML輸出中的預期 (即,右鍵單擊 - >查看源):

<html>
    <head>
        <!-- whatever -->
    </head>
    <body>
        <section id="content">
            <ul class="errors">
                <li>Example Error</li>

但是,這是實際結果:

<html>
    <head>
        <!-- whatever -->
    </head>
    <body>
        <section id="content">
            <ul class="errors">
                             <li>Example Error</li>

為什么? 因為來自PHP的foreach循環縮進了3個選項卡,所以它生成的<li>獲得了一個附加的3個選項卡。 我一直在使用的解決方案? 這里:

<html>
    <head>
        <!-- whatever -->
    </head>
    <body>
        <section id="content">
            <ul class="errors">
<?php
foreach ($errors as $error)
{
?>
                <li><?= $error ?></li>
<?php
}
?>

當然,這是有效的 - 但男人是丑陋的! 看起來我有兩個選擇:讓我的HTML輸出難看,我的代碼可讀或使我的HTML可讀,我的代碼很難看。 為什么我不能同時擁有? 沒有其他辦法嗎?

我想,最好的辦法是使代碼可讀,輸出難看。 誰檢查源代碼呢? 我知道這可能是最受歡迎的反應。 丑陋的HTML源代碼讓我感到煩惱,我希望有一種解決方法,而不會犧牲PHP代碼的可讀性。

php代碼不會在頁面上生成任何縮進。 產生縮進的是縮進

<li> line</li>

你能做的是:使用echo輸出它

 <?php
 foreach ($errors as $error)
        {

        echo "<li>$error</li>";

        }
        ?>

或者你可以這樣做:

  <?php
 foreach ($errors as $error)
    {?>

 <li><?=$error?></li> /(indent it in the begining as much as you want in the markup)

    <?}
    ?>

雖然,imo,你不必擔心標記的外觀。 這並不重要。 縮進對輸出沒有影響

一種解決方案是使用PHP中的輸出緩沖區函數來緩沖所有HTML輸出,然后對其進行后處理以正確縮進所有內容。

請參閱有關該主題的其他問題:

如何正確縮進PHP / HTML混合代碼?

暫無
暫無

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

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