PHP htmlspecialchars 函數功能與用法

PHP htmlspecialchars 函數的功能是用來轉換 HTML 特殊符號為僅能顯示用的編碼,舉例來說,HTML 的大於(>)小於(<)符號、單引號(')或雙引號("")都可以轉換為僅能閱讀的 HTML 符號,這是什麼意思呢?就是將 HTML 符號變成不可執行的符號,例如有人利用網站表單輸入一些清除資料庫的語法或塞入後門程式,通常都會用到一些特殊符號,為了安全起見,所有表單傳遞的資料都應該利用 PHP htmlspecialchars 函數做第一層的把關,這是網頁設計的安全基礎。

PHP htmlspecialchars 函數的語法
string htmlspecialchars( $string , $quote_flags , $encoding , $double_encode )
PHP htmlspecialchars 函數有四個可以使用的參數,第一個參數 $string 是原始字串,必填,第二個參數 $quote_flags 是選用項目,功能是用來設定對引號的轉換,以下是可用的設定方式。
  • ENT_COMPAT:預設,只轉換雙引號,不轉換單引號。
  • ENT_QUOTES:雙引號與單引號都要轉換。
  • ENT_NOQUOTES:單引號與雙引號都不轉換。
第三個參數 $encoding 是用來設定要轉換的編碼,如果你的 PHP 版本是 PHP 5.4.0 之前的舊版本,$encoding 的預設值會是 ISO-8859-1,如果是 PHP5.4.0 以上的新版本,$encoding 的預設值則是萬國碼 UTF-8,當然,你可以自己設定。

最後一個參數
$double_encode 也是選用項目,預設值是轉換全部的 HTML 碼。

PHP htmlspecialchars 函數的應用範例
<?php
echo '<a href=\"#\">Test Link</a>';
echo '<br>';
$MyString=htmlspecialchars("<a href=\"#\">Test Link</a>",ENT_QUOTES);
echo $MyString;
?>
範例的輸出結果
Test Link
<a href="#">Test Link</a>
我們在範例的一開始就用 echo 輸出了一段 HTML 的程式碼,這段程式碼的意思是一個超連結,在沒有使用 htmlspecialchars 函數轉換的情況下,HTML 超連結直接作用了,也就是產生一個 HTML 超連結,接著我們利用 htmlspecialchars 函數將超連結的 HTML 符號轉換成僅能閱讀的符號,從範例的輸出結果就能發現,輸出了一串 HTML 碼,而不是一個能用的超連結,這就代表轉換成功了,我們利用瀏覽器的檢視原始碼功能,可以看到以下這樣的內容:
<a href=\"#\">Test Link</a><br>&lt;a href=&quot;#&quot;&gt;Test Link&lt;/a&gt;
在 <br> 的左邊是原本的 HTML 超連結程式碼,右邊則是經過 htmlspecialchars 函數轉換的結果,透過這樣的方式幫我們過濾表單來的資料相當有用,轉換效率也相當不錯,以上就是 PHP htmlspecialchars 函數的基本功能操作。

延伸閱讀
© Copyright webtech.tw Since 2010