我希望您能像往常一樣幫助您,謝謝。如何在應用htmlspecialchars後替換html換行符
我有一個表格在一個文本輸入的信息,我讓用戶寫html標籤,因爲有時他們會想literaly寫html標籤,因此,如果他們寫這樣的事情作爲輸入:
<h1>This is the input content</h1>
I like Pizza
I like Cheese
This is the end of the input, as you see I pressed enter several times
我節省使用nl2br輸入,這樣的事情:
$textForDataBase = nl2br($_POST['input']);
那麼數據庫值是這樣的:
<h1>This is the input content</h1>
I like Pizza<br />I like Cheese<br />This is the end of the input, as you see I pressed enter several times
然後,在顯示內容之前,我將htmlspecialchars
應用於我的字符串,但我希望所有不是斷行的html標記都轉換爲html實體,所以我嘗試使用preg_replace,但我沒有運氣,我該怎麼辦?
$html = htmlspecialchars($val['descripcion']);
echo preg_replace('#<br\s*/?>#i', "\n", $html);
如果我不使用用htmlspecialchars輸出會是這樣的:
這是輸入內容
我喜歡比薩我喜歡奶酪
這是輸入的結束,正如你看到的我按下Enter鍵數次
但是,如果使用它:
<h1>This is the input content</h1>
I like Pizza<br />I like Cheese<br />This is the end of the input, as you see I pressed enter several times
預期輸出爲:
<h1>This is the input content</h1>
I like Pizza
I like Cheese
This is the end of the input, as you see I pressed enter several times
看看這個https://stackoverflow.com/questions/4114308/htmlentities-with-exceptions –
,阻止改寫(munging)輸入。 –
當你在db中存儲輸入細節時,移除nl2br並將用戶細節存儲爲與輸入值相同,然後當你顯示值時首先使用htmlspecialchars,然後使用nl2br並最終回顯它。 –