一、如何在程序中調用HTMLPurifier
1、一般性調用
根據官方的文檔中,我們可以要在PHP程序中調用HTMLPurifier,需要先將HTMLPurifier.auto.php引入到程序文件中,具體方法如下:
require_once '/path/to/HTMLPurifier.auto.php' ; |
2、將HTMLPurifier整合到ThinkPHP中
根據ThinkPHP的規範,對於第三方擴展,不符合ThinkPHP開發規範的,需要將HTMLPurifier放入到Library/Vendor目錄中。然後我們可以在方法中通過下面方法將HTMLPurifier.auto.php引入到框架程序中:
vendor( 'htmlpurifier.library.HTMLPurifier#auto' ); |
不過這裏我使用的ThinkPHP 3.2.1,發現這種方法只能使用在函數中,對於控制器類中這樣引入是無法正確識別的。也就是說,我們只能在common/function.php文件中引用。
二、創建HTMLPurifier對象並實現對富文本的過濾
官方文檔已經給出了基本的創建方法,即使說先需要一個配置類Config,然後使用配置類對象來生成Purifier對象。然後調用purifier方法對需要過濾的文本進行過濾。代碼如下:
$config =
HTMLPurifier_Config::createDefault(); |
$purifier = new HTMLPurifier( $config ); |
$clean_html = $purifier ->purify( $dirty_html ); |
三、如何對HTMLPurifer的過濾器進行配置
要使用HTMLPurifier,重點還是在如何進行配置。對於上面的程序,我們通過createDefault()方法創建了一個默認的配置對象。我們如果要修改配置的話,可以通過set方法來進行配置設置,方法如下:
$config ->set( 'config_object' ,
value, a=null); |
第一個參數就是需要配置的屬性,第二個參數就是屬性的值,第三個參數具體是做什麼用的我也還沒有搞明白,不過一般都沒有用過,等有時間了再慢慢兒來研究研究。
HTMLPurifier的配置屬性可以通過其網站查詢到:http://htmlpurifier.org/live/configdoc/plain.html
1、配置屬性選擇
HTMLPurifier的配置文檔主要是兩級分類,大類分Attr(屬性)、HTML(html標籤)、AutoFormat(自動格式)、CSS(css配置)、Output(輸出配置)……小類選擇通過大類名稱加.加小類名稱可以完成。
比如我要配置允許的html標籤,比如說p標籤和a標籤,可以如下配置
$config ->set( 'HTML.Allowed' , 'p,a' ); |
2、屬性值的選擇
在官方文檔中,點擊一個屬性後,可以看到對這個屬性的解釋,會告訴你這個屬性的值的類型(Type)是String、Int、Array、Boolen……
接着還會告訴你這個屬性的默認值,比如是NULL還是true還是false等。這個值的格式就跟PHP的格式一樣的。
3、白名單過濾機制
HTMLPurifier使用了白名單過濾機制,只有被設置允許的纔會通過檢驗。
4、基本過濾事例
a、過濾掉文本中的所有html標籤
/** |
*
過濾掉所有html標籤很簡單,原因則在白名單機制完成 |
*/ |
$config ->set( 'HTML.Allowed' , '' ); |
b、保留超鏈接標籤a及其href鏈接地址屬性,並自動添加target屬性值爲’_blank’
$config ->set( 'HTML.Allowed' , 'a[href]' ); |
$config ->set( 'HTML.TargetBlank' ,
true); |
c、自動完成段落代碼並清除掉無用的空標籤
//
讓文本自動添加段落標籤,前提是必須允許P標籤的使用 |
$config ->set( 'HTML.Allowed' , 'p' ); |
$config ->set( 'AutoFormat.AutoParagraph' ,
true); |
//
清除空標籤 |
$config ->set( 'AutoFormat.RemoveEmpty' ,
true); |
……
當然了,HTMLPurifier的過濾功能非常強大的,每一個點都要寫到那也不現實,這裏主要還是要說明如何寫配置,只有配置好了才知道如何去拓展!
轉自 http://www.xcoder.cn/index.php/archives/971