天天看點

和HTML标簽相關的字元串格式化

和HTML标簽相關的字元串格式化

string nl2br ( string $string )

nl2br() 就是将\n 替換成 <br> //javascript對\n才能夠執行換行,對</br>是不能執行換行

htmlspecialchars() 把一些預定義的字元轉換為 HTML 實體。

string htmlspecialchars(string,quotestyle,[character-set])

轉換以下字元及對應的實體

& (和号) 成為 &
" (雙引号) 成為 "
' (單引号) 成為 '
< (小于) 成為 <
> (大于) 成為 >           

第二個參數: ENT_COMPAT 隻轉換雙引号, 保留單引号, 為預設值 compat: 相容性

ENT_QUOTES 同時轉換兩種引号 quotes: 引号

ENT_NOQUOTES 不對引号進行轉換

<html>
<body>
<?php
$str = "John & \" 'Adams'";
echo htmlspecialchars($str, ENT_COMPAT);
echo "<br />";
echo htmlspecialchars($str, ENT_QUOTES);
echo "<br />";
echo htmlspecialchars($str, ENT_NOQUOTES);
?>
</body>
</html>           

輸出結果:John & " 'Adams'

John & " 'Adams'

John & " 'Adams'

htmlentities() 可以将所有的非ASCII碼字元轉換為對應的實體代碼;除字母、數字、\外, 漢字和鍵盤上其他字元都轉換

<?php
$str = "A 'quote' \" is <b>bold</b>" ;
echo htmlentities ( $str ); // 輸出後源代碼: A 'quote' is <b>bold</b>
echo htmlentities ( $str , ENT_QUOTES ); // 輸出後源代碼: A 'quote' is <b>bold</b>
?>           

傳回的結果:A 'quote' "is <b>bold</b>

A 'quote' "is <b>bold</b>

注意: htmlspecialchars()和htmlentities作用直接輸出HTML腳本

htmlspecialchars()和htmlentities()函數對于轉義字元"\"處理,不會轉義實體代碼,要麼當轉義字元對待,要麼原樣輸出;

PHP中htmlentities和htmlspecialchars的差別

這兩個函數的功能都是轉換字元為HTML字元編碼, 特别是url和代碼字元串。防止字元标記被浏覽器執行。

使用中文時沒什麼差別, 但htmlentities會格式化中文字元使得中文輸入是亂碼。

htmlentities轉換所有的html标記, htmlspecialchars隻格式化& ' " < 和 > 這幾個特殊符号

addslashes() 在指定的預定義字元前添加反斜杠。

這些預定義字元是:單引号 (') 雙引号 (") 反斜杠 (\) NULL字元(\x00)

提示:該函數可用于為存儲在資料庫中的字元串以及資料庫查詢語句準備合适的字元串。

注釋:預設情況下,PHP 指令 magic_quotes_gpc 為 on,對所有的 GET、POST 和 COOKIE資料自動運作 addslashes()。

不要對已經被magic_quotes_gpc轉義過的字元串使用 addslashes(),因為這樣會導緻雙層轉義。

遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測。(如:$c=(!get_magic_quotes_gpc())?addslashes($c):$c;)

在本例中,我們要向字元串中的預定義字元添加反斜杠:

<?php
$str = "Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";
?>           

輸出:

Who's John Adams? This is not safe in a database query.

Who\'s John Adams? This is safe in a database query.

<?php
header("Content-type:text/html; charset=utf-8");
$str = "wo are \x0a studying \x00 php";
echo $str;
echo "<br>";
echo addslashes($str);
?>           

輸出:

wo are studying php

wo are studying \0 php

stripslashes() 删除反斜線("\")

在送出的表單資料中 ' " \ 等字元前被自動加上一個\ ,這是配置檔案php.ini中選項magic_quotes_gpc在起作用,

預設是打開的,如果不處理則将資料儲存到資料庫時,有可能會被資料庫誤當成控制符号而引起錯誤。

通常htmlspecialchars()和stripslashes()函數複合的方式,聯合處理表單中的送出的資料htmlspecialchars(stripslashes())

strip_tags()

string strip_tags ( string $str [, string $allowable_tags ] )

剝去 HTML、XML 以及 PHP 的标簽。

<?php
echo strip_tags("Hello <b><i>world!</i></b>","<b>");
?>           

輸出結果:Hello world!

執行個體:

<?php
$str = "<b>webserver;</b> & \ 'Linux' & Apache";
echo "$str"; //直接輸出
echo "<br/>";
echo htmlspecialchars($str,ENT_COMPAT); //隻轉換雙引号,為預設參數
echo "<br />";
echo htmlspecialchars($str,ENT_NOQUOTES); //不對引号進行轉換
echo "<br />";
echo htmlspecialchars($str,ENT_QUOTES); //同時轉換單引号和雙引号
echo "<br />";
echo htmlentities($str); //将所有的非ASCII碼字元轉換為對應的實體代碼
echo "<br />";
echo addslashes($str); //将" ' \ 字元前添加反斜線
echo "<br />";
echo stripslashes($str); //删除反斜線
echo "<br />";
echo strip_tags($str); //删除<html>标記
?>           

輸出結果:

webserver; & \ 'Linux' & Apache

<b>webserver;</b> & \ 'Linux' & Apache

<b>webserver;</b> & \ 'Linux' & Apache

<b>webserver;</b> & \ 'Linux' & Apache

<b>webserver;</b> & \ 'Linux' & Apache

webserver; & \\ \'Linux\' & Apache

webserver; & 'Linux' & Apache

webserver; & \ 'Linux' & Apache

繼續閱讀