0

我无法让我的网站正确显示数据库条目。我正在将带换行符的格式化文本复制并粘贴到我的 MySQL 数据库中。如果我在终端中查看条目,它将正确显示带有换行符的信息。当我在浏览器中查看时,它是所有输出,就好像它忽略了所有格式规则并使其成为一长串文本,刚好碰到 DIV 的边缘并创建一个没有任何格式的新行。我是新手,所以如果我的问题看起来含糊不清,我提前道歉,只需询问您可能认为对提供准确解决方案有用的任何其他信息。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>
        Test Site!    
        </title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <LINK href="CLLProfile.css" rel="stylesheet" type="text/css">
                    <script language="javascript" type="text/javascript">


// Roshan's Ajax dropdown code with php
// This notice must stay intact for legal use
// Copyright reserved to Roshan Bhattarai - nepaliboy007@yahoo.com
// If you have any problem contact me at http://roshanbh.com.np
function getXMLHTTP() { //function to return the xml http object
        var xmlhttp=false;  
        try{
            xmlhttp=new XMLHttpRequest();
        }
        catch(e)    {       
            try{            
                xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e){
                try{
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch(e1){
                    xmlhttp=false;
                }
            }
        }

        return xmlhttp;
    }

    function getCategory(CatID) {       

        var strURL="Categories.php?category="+CatID;
        var req = getXMLHTTP();

        if (req) {

            req.onreadystatechange = function() {
                if (req.readyState == 4) {
                    // only if "OK"
                    if (req.status == 200) {                        
                        document.getElementById('categorydiv').innerHTML=req.responseText;                      
                    } else {
                        alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                    }
                }               
            }           
            req.open("GET", strURL, true);
            req.send(null);
        }       
    }

    function getSub(CatID) {        

        var strURL="SubCategories.php?category="+CatID;
        var req = getXMLHTTP();

        if (req) {

            req.onreadystatechange = function() {
                if (req.readyState == 4) {
                    // only if "OK"
                    if (req.status == 200) {                        
                        document.getElementById('subcategorydiv').innerHTML=req.responseText;                       
                    } else {
                        alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                    }
                }               
            }           
            req.open("GET", strURL, true);
            req.send(null);
        }       
    }

</script>

    </head>

    <body>
        <div id="wrapper">
        <div class="container">

            <div id="header">
                <a href="index.php"><img src="images/Logo.jpg"></a>

                <div class="login"> 
                    <a href="register.php">Sign Up</a> <a href="main_login.php">Login</a>
                </div>

                <div class="search">
                    <form id ="search" action="" method="post" enctype="multipart/form-data">
                        <label>Search:</label>
                        <input type="text" name="searchBox" id="searchBox" /> 
                        <input type="submit" id="Submit" value="Submit" />
                    </form> 
                </div>

            </div>

            <div class="navigation">

                <form id ="categoryForm" action="businesses.php" method="post">
                    <div id="categorydiv">
                        <select name="thing" onChange="getSub(this.value)">
                            <option value=0>Select Main Category<?=$options?>
                        </select> </div>

                    <div id="subcategorydiv">
                        <select name="subCats" >
                             <option>Select Sub Category</option>
                        </select></div>

                        <input type="submit" value="Submit" id="Submit" />
                </form>
                </div>


                <div class="content">

                   <?PHP                             


                     echo "<img src=" . "users/" . $username . "/images/" . $logo . " " . "width=" . "200" . " " . "height=" . "auto" . " " . "border=" . "0" . "/>" . "</a>" . "<br>";


                  ?>

                    <div class="description">

                   <?PHP                             
                     echo "<h2>" . $name . "</h2>";
                     echo "<p>" . $description . "</p>";

                  ?>
                    </div>



                    </div>
                </div>

        </div>


    </body>

</html>

文本我粘贴到 MySQL 数据库中,它在描述字段中输出:

1930 年,查尔斯·海德 (Charles Hyde) 和大卫·弗雷登堡 (David Vredenburg) 在爱荷华州比肯斯菲尔德开了一家小杂货店。那家商店发展成为 Hy-Vee——一家以优质服务和低价而闻名的公司。作为一家员工所有的公司,Hy-Vee 鼓励我们 56,000 多名员工中的每一位帮助指导公司。

我们出色的成功证明了他们的辛勤工作和清晰的愿景。通过他们的努力,Hy-Vee 这个名字已经成为优质产品、低廉价格和优质客户服务的代名词。我们的口号“每个通道都有一个有益的微笑”表达了我们企业理念的基础。

Hy-Vee 是中西部消费者渴望获得有关饮食、营养和健康主题信息的试金石。以天然和有机产品为特色的健康市场部门;店内营养师的咨询服务;NuVal 营养评分系统;消费者和员工健康计划;Hy-Vee 铁人三项赛强调了公司对健康生活方式的承诺。

我们的公司办公室位于爱荷华州西得梅因。Hy-Vee 校园包括一个 12,000 平方英尺的会议中心,用于会议、培训和继续教育项目。

我们的配送业务位于爱荷华州 Chariton,我们拥有超过 150 万平方英尺的先进仓库空间。另一个大型配送中心位于爱荷华州切罗基,占地 650,000 平方英尺,用于存放干粮产品和一般商品。

Hy-Vee 的销售额超过 73 亿美元,在中西部八个州拥有超过 235 家零售店,跻身美国前 20 家连锁超市和前 50 家私营公司之列。食品行业的权威声音《超市新闻》授予该公司“全健康企业奖”,以表彰该公司在提供促进健康生活方式的服务和计划方面的领导地位。

4

3 回答 3

4

换行符(“\n”和/或“\r”)需要转换为分行标记(<br />)才能在网络浏览器中正确显示

str_replace("\n", "<br />", "My string\n has line breaks");

如果你想使用段落标签,你可以这样做:

echo "<p>".str_replace("\n", "</p><p>", "My string\n has line breaks")."</p>";
于 2012-11-19T17:35:29.980 回答
2

为此,您可以使用nl2br()which 替换\r\n\n使用<br />

$text = "some\ntext\nwith new lines";
$text = nl2br($text);

输出

some<br />
text<br />
with new lines

因此,在您的代码中,将其更改为:

   echo "<h2>" . nl2br(htmlentities($name)) . "</h2>";
   echo "<p>" . nl2br(htmlentities($description)) . "</p>";

我还添加htmlentities()了防止 XSS 并使用正确的 HTML 实体对特殊字符进行编码。

于 2012-11-19T17:41:10.187 回答
1

浏览器会忽略换行符(不过,当您检查源代码时会看到它们)。

您需要将它们转换为<br />(最简单的解决方案是$str = str_replace ("\n", "<br />", $str);

于 2012-11-19T17:38:35.390 回答