【问题标题】:PHP echo '<p>' printing <p> </p>PHP echo '<p>' 打印 <p> </p>
【发布时间】:2013-06-04 10:46:05
【问题描述】:

我正在尝试在 php 中创建一个循环以显示一个类别列表,该循环工作正常,并且 sql 查询提取所有正确的信息,但是我试图为每 4 次循环回显一个 &lt;p&gt; 标记增量,这会在我的网站设计上创建一个新行。当我使用echo '&lt;p&gt;'; 回显一个 p 标签时,它会立即创建一个结束标签。

这是我的代码:

        echo '<!-- Create first 4 --><P>';
                    while($row1 = mysql_fetch_array($result1))
                        {  
                        
                        echo '<div class="cat">';     
                        echo '<img src="'.$row1['IMAGE'].'" alt="'.$row1['NAME'].'">';
                        echo '<h2>'.$row1['NAME'].'</h2>';
                        echo '</div>';
                        $i++;
                        
                        //force a new line of catagories
                        if (( $i == 4 )||( $i == 8 )||( $i == 12 ))
                            {
                                echo '<!-- if more than 4 Close first 4 --></p>';
                                echo '<!-- Create second 4 --><p>'; 
                            }       
                        } 
                        echo '<!-- close first 4 --></p>';

当它在 Firefox 中运行并且我检查源代码时,我得到了这个:

    <div class="content">
      <!-- Create first 4 -->
    <p></p><div class="cat"> … </div><div class="cat"> … </div><div class="cat"> … </div><div class="cat"> … </div>
      <!-- if more than 4 Close first 4 -->
    <p></p>
      <!-- Create second 4 -->
    <p></p><div class="cat"> … </div><div class="cat"> … </div><div class="cat"> … </div><div class="cat"> … </div>
      <!-- if more than 4 Close first 4 -->
    <p></p>
      <!-- Create second 4 -->
    <p> … </p></div>

我需要它来准确打印 echo 语句中的内容。

【问题讨论】:

  • 您查看的是页面源还是检查器?检查器工具将向您显示它必须隐式添加以验证 HTML 的结束标记。页面源应该准确地显示您发送的内容。在 Firefox 中,Ctl-U 将显示源代码或view-source://your-url-path...
  • @MichaelBerkowski 可能是正确的。 +1。

标签: php html while-loop echo


【解决方案1】:

您确实打印了 echo 语句中的内容。但是,如果是 happens to be invalid HTML,那么浏览器可能会决定“修复它”以便有一些可用的东西。

解决您的问题的正确方法是将&lt;div&gt; 标记替换为&lt;p&gt; - 这将是有效的HTML,因此浏览器不会干扰,您可以使用CSS 适当地设置它们的样式并实现相同的效果段落的视觉效果。

【讨论】:

  • 我不知道为什么这被否决了,因为它解释了正在发生的事情并提出了一个正确的解决方案,但也许只有我一个人。
【解决方案2】:

在这里查看“模运算符”示例:http://php.net/manual/en/language.operators.arithmetic.php 您只需要检查您的循环是否为 4 的因子,然后执行您的代码。我还建议你从语义上大声读出你的代码,你会很容易发现你的错误。

【讨论】:

    【解决方案3】:

    我从您的代码中删除了不需要的行并得到以下信息:

    <?php
    
    echo "<!-- Create first 4 --><p>\n";
    
    $i = 0;
    while ($i < 14)
    {  
        echo '    <div class="cat"></div>' . "\n";     
        $i++;
    
        //force a new line of catagories
        if (( $i == 4 )||( $i == 8 )||( $i == 12 ))
        {
            echo '<!-- if more than 4 Close first 4 --></p>' . "\n";
            echo '<!-- Create second 4 --><p>' . "\n"; 
        }       
    } 
    
    echo '<!-- close first 4 --></p>' . "\n";
    ?>
    

    结果是:

    <!-- Create first 4 --><p>
        <div class="cat"></div>
        <div class="cat"></div>
        <div class="cat"></div>
        <div class="cat"></div>
    <!-- if more than 4 Close first 4 --></p>
    <!-- Create second 4 --><p>
        <div class="cat"></div>
        <div class="cat"></div>
        <div class="cat"></div>
        <div class="cat"></div>
    <!-- if more than 4 Close first 4 --></p>
    <!-- Create second 4 --><p>
        <div class="cat"></div>
        <div class="cat"></div>
        <div class="cat"></div>
        <div class="cat"></div>
    <!-- if more than 4 Close first 4 --></p>
    <!-- Create second 4 --><p>
        <div class="cat"></div>
        <div class="cat"></div>
    <!-- close first 4 --></p>
    

    看起来还不错。您的代码中的其他地方有问题。

    顺便说一句。我建议使用if ($i % 4 == 0) 而不是if (( $i == 4 )||( $i == 8 )||( $i == 12 ))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-20
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多