最新下載
夢幻水族館
少女前線
星之翼
小花仙精靈樂園
餐廳萌物語
山河旅探
戀與製作人
最強腦3
異塵:達米拉
少年西遊記2
24小時閱讀排行榜
- 1 如何防止 Matplotlib 繪圖中的標籤被切斷?
- 2 如何對 MongoDB 中的嵌入陣列欄位進行排序?
- 3 Movavi 影片編輯器破解
- 4 dynamics.exe - 什麼是dynamics.exe?
- 5 如何同時等待非同步回呼函數?
- 6 Backbone.js 中 `` 的用途是什麼?
- 7 如何在MySQL中實現Postgresql的DISTINCT ON功能?
- 8 如何轉義 MySQL 使用者變數的 JPA 查詢中的冒號字元?
- 9 如何檢索 Pandas DataFrame 中每個組的初始行?
- 10 如何修復在 Windows 上設定 npm 前綴時出現的「EPERM:不允許操作」錯誤?
- 11 dwrcc.exe - 什麼是 dwrcc.exe?
- 12 如何準確地確定完美平方而不出現浮點錯誤?
- 13 為什麼我的 Nuxt 應用程式中未定義「navigator」、「window」和「document」?
- 14 dxinput3.dll - 什麼是 dxinput3.dll?
- 15 為什麼 Android Studio 在 Marshmallow 上註冊時會拋出「getSlotFromBufferLocked:未知緩衝區」錯誤?
最新教學
-
- 國外Web開發全端課程全集
- 1718 2024-04-24
-
- Go語言實戰之 GraphQL
- 2001 2024-04-19
-
- 550W粉絲大佬手把手從零學JavaScript
- 3419 2024-04-18
-
- python大神Mosh,零基礎小白6小時完全入門
- 2952 2024-04-10
-
- MySQL 初學入門(mosh老師)
- 1804 2024-04-07
-
- Mock.js | Axios.js | Json | Ajax--十天精品課堂
- 2617 2024-03-29
require_once '/path/to/HTMLPurifier.auto.php';
#根據ThinkPHP的規範,對於第三方擴展,不符合ThinkPHP開發規範的,需要將HTMLPurifier放入Library/Vendor目錄中。然後我們可以在方法中透過下面方法將HTMLPurifier.auto.php引入框架程式中:
vendor('htmlpurifier.library.HTMLPurifier#auto');
不過這裡我使用的ThinkPHP 3.2.1,發現這個方法只能使用在函數中,對於控制器類別中這樣引入是無法正確辨識的。也就是說,我們只能在common/function.php檔案中引用。
建立HTMLPurifier物件並實作對富文本的過濾
$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的配置屬性可以透過其網站查詢到
配置屬性選擇
HTMLPurifier的設定檔主要是兩層分類,大類分Attr(屬性)、HTML (html標籤)、AutoFormat(自動格式)、CSS(css配置)、Output(輸出配置)…小類選擇透過大類名稱加.加小類名稱可以完成。
例如我要配置允許的html標籤,比如說p標籤和a標籤,可以如下配置
$config->set('HTML.Allowed', 'p,a');
屬性值的選擇
在官方文件中,點擊一個屬性後,可以看到這個屬性的解釋,會告訴你這個屬性的值的類型(Type)是String、Int、Array、Boolen……
#接著還會告訴你這個屬性的預設值,例如是NULL還是true還是false等。這個值的格式就跟PHP的格式一樣的。
白名單過濾機制
HTMLPurifier使用了白名單過濾機制,只有被設定允許的才會通過檢驗。
基本過濾範例
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); ……