0

Web サイトにデータベース エントリを正しく表示するのに問題があります。改行を含む書式設定されたテキストをコピーして MySQL データベースに貼り付けています。ターミナルでエントリを表示すると、情報が改行で正しく表示されます。ブラウザで表示すると、すべての書式設定ルールが無視され、DIV の端に当たる 1 つの長いテキスト文字列になり、書式設定のない新しい行が作成されるかのようにすべて出力されます。私はこれに慣れていないので、私の質問が漠然としていると思われる場合は、事前にお詫び申し上げます。正確な解決策を提供するために役立つと思われる追加情報をお尋ねください.

<!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 年、チャールズ ハイドとデビッド フレデンバーグは、アイオワ州ビーコンズフィールドに小さな雑貨店をオープンしました。その店は、優れたサービスと低価格で知られる会社、Hy-Vee に成長しました。従業員所有の会社として、Hy-Vee は 56,000 人を超える従業員一人ひとりが会社を導く手助けをすることを奨励しています。

私たちの傑出した成功は、彼らの努力と明確なビジョンを示しています。彼らの努力により、Hy-Vee という名前は、高品質の製品、低価格、優れた顧客サービスの代名詞になりました。私たちのスローガンである「すべての通路で役立つ笑顔」は、企業理念の根底にあるものです。

Hy-Vee は、中西部の消費者がダイエット、栄養、健康に関する情報を求めていることの試金石です。天然および有機製品を扱うヘルスマーケット部門。店内栄養士のコンサルティングサービス。NuVal栄養スコアリングシステム; 消費者および従業員のウェルネス プログラム。Hy-Vee Triathlon は、同社の健康的なライフスタイルへの取り組みを強調しています。

当社のオフィスは、アイオワ州ウェスト デモインにあります。Hy-Vee キャンパスには、ミーティング、トレーニング、継続教育プログラム用の 12,000 平方フィートのカンファレンス センターがあります。

当社の流通事業はアイオワ州チャリトンに拠点を置き、150 万平方フィートを超える最先端の倉庫スペースを保有しています。アイオワ州チェロキーには、ドライフード製品と一般的な商品を扱う 650,000 平方フィートのスペースを持つ別の大規模な配送センターがあります。

中西部の 8 つの州で 73 億ドルを超える売上と 235 を超える小売店を擁する Hy-Vee は、米国の上位 20 のスーパーマーケット チェーンと上位 50 の民間企業にランクされています。食品業界の権威ある声である Supermarket News は、健康的なライフスタイルを促進するサービスとプログラムを提供するリーダーシップを評価され、同社に Whole Health Enterprise Award を授与しました。

4

3 に答える 3

4

Web ブラウザーで正しく表示するには、改行 ("\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()置き換えるものを使用できます:\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 に答える