0

轻松一个!我正在尝试编写一个便宜的论坛。来自 C 背景,我开始注意到 PHP 的一些奇怪之处。虽然有一个函数将 DIV 内的字符串 (HTML) 返回到位,但浏览器不会打印</DIV>- 即使它本身是回显的。

PHP 是否决定何时回显某些 DOM 元素或对 HTML 输出有限制?

    echo "Start<div id='Forum'>";
    echo "Forum";   
    GetFullList();
    echo "</div>";

其中,GetFullList() 包括:

function GetFullList(){ 
        $sql="SELECT * FROM `Forum` WHERE `IsReply` =0";
        $result=mysql_query($sql);
        if (!$result){
            echo mysql_error();
        }
        if($result){
        while($ForumEntry = mysql_fetch_assoc($result)){
            $IsReply        =   $ForumEntry["IsReply"];
            $ParentPost =   $ForumEntry["ParentTopic"];
            $f_User     =   $ForumEntry["User"];
            $f_Replies      =   $ForumEntry["Replies"];
            $f_Views        =   $ForumEntry["Views"];
            $f_Time     =   $ForumEntry["Time"];
            $f_Post     =   $ForumEntry["Post"];
            $f_Topic        =   $ForumEntry["Topic"];
            $f_Index        =   $ForumEntry["Index"];
            echo DisplayPost($f_User, $f_Replies, $f_Views, $f_Time, $f_Post, $f_Topic, $f_Index);
            GetChildPostsOf($ParentPost);
                }
            }
        }

DisplayPost() 是这样构建的:

 function DisplayPost($f_User, $f_Replies, $f_Views, $f_Time, $f_Post, $f_Topic, $f_Index){           
            $PostBlock = "<div id='Grp_Cell' style='width:930;background-color:#999999;text-align:left;'><div id='Grp_Cell' style='float:left;'><div id='Tbl_Cel'>User: ".$f_User."</div><div id='Tbl_Cel'>Replies: ". $f_Replies."</div><div id='Tbl_Cel'>Views: ".$f_Views."</div><div id='Tbl_Cel'style='background-color:777777;height:112;'>Post started on ".$f_Time.".&nbsp;</div></div><div id='Grp_Cell' style='float:right;width:600;'><div id='Tbl_Cel'>Subject: ".$f_Topic."</div><div id='Tbl_Cel' style='background-color:777777;height:150;'>". $f_Post."</div><a onClick='Reply(".$f_Index.");Filter();'><div id='Tbl_Cel' style='background-color:#888888; height:50; width:50; float:right; padding:2;border-color:black; border:2;'><br>Reply</div></a></div>";
            return $PostBlock;
          }

(显示 DB 结果的 div 脚手架:帖子。)当我尝试在 GetFullList() 之后回显“< /div>”时,结果不会以 HTML 格式打印,而页面的其余部分将包含在格式错误的 div 下.

4

1 回答 1

1

$PostBlock 中有 10 个开始 div 和 9 个结束 div。</div>必要时应添加结束语。查看输出的一个简单方法是将其分成如下几行:

$PostBlock = "
<div id='Grp_Cell' style='width:930;background-color:#999999;text-align:left;'>         
    <div id='Grp_Cell' style='float:left;'>
        <div id='Tbl_Cel'>User: ".$f_User."</div>
        <div id='Tbl_Cel'>Replies: ". $f_Replies."</div>
        <div id='Tbl_Cel'>Views: ".$f_Views."</div>
        <div id='Tbl_Cel'style='background-color:777777;height:112;'>Post started on ".$f_Time.".&nbsp;</div>
    </div>
    <div id='Grp_Cell' style='float:right;width:600;'>
        <div id='Tbl_Cel'>Subject: ".$f_Topic."</div>
        <div id='Tbl_Cel' style='background-color:777777;height:150;'>". $f_Post."</div>
        <a onClick='Reply(".$f_Index.");Filter();'><div id='Tbl_Cel' style='background-color:#888888; height:50; width:50; float:right; padding:2;border-color:black; border:2;'><br>Reply</div></a>
    </div>  ";
于 2013-08-30T19:46:15.433 回答