日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

php去除html标签_用PHP操作DOM (一)

發布時間:2025/4/5 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php去除html标签_用PHP操作DOM (一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從事PHP開發很多年了,也寫過些小項目,經常要在后臺生成前端輸出的HTML腳本,說白了就是把HTML語言以字符串的方式嵌入在PHP的輸入語句中,單純的輸出沒什么問題,但遇到DOM修改時很是麻煩,要做各種查找與替換,還要寫一大堆正則,反反復復,效率極低。也用過網上的一些PHP操作DOM的開源項目,不過問題多多,要么就停更很久了,要么不完善,我在寫代碼這個問題上是個不將就的人,所以,就自己想整一個這么個項目,我的目的很簡單,就是要在PHP里操作DOM就像Jquery一樣,能生成,能解析,還要能符合目前H5及CSS3的特性。我準備花點時間來記錄這一過程,應該要分幾個章節來寫,我的環境是LAMP,PHP基于PHP7.3版本。先來說一下書寫規則。對了,這是我在簡書上寫的第一篇文章,所以態度上我是很認真的。我給這個項目取名叫SPEEDX,很多命名前綴我會帶上這個項目名,為什么呢,因為PHP中我特別不喜歡命名空間這么個玩意,不知為什么,性格如此。

往往想象很美好的事情,現實確很骨感。為了達到對DOM及CSS精準操作的目的,不搞大雜會,為此我仔細分析了一下,本項目操作主要對像應該這樣分類:

1. CSS類:`.className{屬性列表}`

2. CSS屬性 : `vName: value`

3. DOM標簽 諸如`

4. DOM屬性,如: `

5. DOM節點基本內容: 就是節點內的內容,也可以人包含其它節點

為此,我弄了個比較詳細的config文件,其中定義的HTML及CSS中所用的標簽、屬性及相關瀏覽器的支持情況。其中重要的幾項常量定義我做一下說明:

  • SPEEDX_STYLE_NULL = 0;//CSS3標準,但還沒有瀏覽器實現
  • SPEEDX_STYLE_W3C = 1; //W3C標準屬性:表示支持這一屬性或支持這一屬性值的瀏覽器都是采用標準格式,即不帶瀏覽器前綴的書寫方式;
  • SPEEDX_STYLE_MOZ = 2; //火狐瀏覽器內核(-moz-):表示支持這一屬性或屬性值的火狐瀏覽器在書寫格式上要帶"-moz-"前綴;
  • SPEEDX_STYLE_WEBKIT = 4; //Chrome和Safari瀏覽器內核:表示支持這一屬性或屬性值的瀏覽器在CSS書寫格式上要帶"-webkit-"前綴;
  • SPEEDX_STYLE_MS = 8; //IE瀏覽器內核:IE支持的CSS特性,要加"-ms-"前綴
  • SPEEDX_STYLE_O = 16; //Opera瀏覽器內核:對于兼容部分Opera瀏覽器,CSS特性前要加"-o-"前綴
  • SPEEDX_STYLE_ALL = 31; //所有兼容模式,為了兼容大部分主流瀏覽器的不同版本,要加上上面所有的前綴。

具體配置如下:文件中已備注說明:

<?php /** * speedx版本及版本號 */ const SPEEDX_VARNAME = "0.1.1"; const SPEEDX_VARCODE = 1; const SPEEDX_ARCHI_BOOTSTRAP = "SPEEDX_ARCHI_BOOTSTRAP"; const SPEEDX_ARCHI_SEMANTIC = "SPEEDX_ARCHI_SEMANTICUI"; const COMPACT_TO_STRING = 0;//用于函數speedxCompactJs(),此常量表示壓縮后的js以字符串的方式返回; const COMPACT_TO_FILE = 1;//:用于函數speedxCompactJs(),此常量表示壓縮后的js存儲到指定的js文件; const SPEEDX_REQUEST_GET = "SPEEDX_REQUEST_GET"; const SPEEDX_REQUEST_POST = "SPEEDX_REQUEST_POST"; /** * 格式化輸出時每一行結尾要附加的字符 */ const SPEEDX_RN = ""; const SPEEDX_BR = "
"; const SPEEDX_NIL = ""; $SPEEDX_FORMAT_LINE_END = SPEEDX_NIL; /** * 格式化輸出時新行前導字符 */ const SPEEDX_FORMAT_FIX_HTML = " "; const SPEEDX_FORMAT_FIX_SPACE = " "; $SPEEDX_FORMAT_LINE_HEAD = SPEEDX_NIL; /* ***異常處理類所用到的常定義: ***調用主文件:_SPEEDX_CLASS_PHP_/class.speedx_error_debuger.php */ const SPEEDX_STDOUT_NULL = 0; //信息屏蔽 const SPEEDX_STDOUT_SCREEN = 1;//信息輸出至屏幕 const SPEEDX_STDOUT_FILE = 2;//信息輸出至文件 const SPEEDX_STDOUT_WEBSOCKET = 3;//信息輸出至后臺管理員 const SPEEDX_STDOUT_DB = 4;//信息輸出至數據庫 const SPEEDX_DUBUG_DATATABLE = "exception"; //異常記錄數據庫表名稱,表結構為固定結構,詳見表定義 $_SPEEDX_DEBUGLOG = _SPEEDX_LOG_ . "speedx_debug.log"; $_DEBUG_TYPE = SPEEDX_STDOUT_FILE; //自定義異常輸入方式,生產時請設置為:DEBUG_TO_LOG $_SPEEDX_ERRLOG = _SPEEDX_LOG_ . "speedx_error.log"; //自定義異常日志文件 $_ERR_TYPE = SPEEDX_STDOUT_FILE; //自定義異常輸入方式,生產時請設置為:ERR_TO_LOG /** * speedx_domnodes類在解析時節點的狀態 */ const SPEEDX_DOMNODE_TAG_START = 1;//解析節點需要起始標簽 const SPEEDX_DOMNODE_TAG_END = 2;//解析節點需要結束標簽 const SPEEDX_DOMNODE_CLOSE = 3;//解析節點禁止節點操作 /** * 自定義輸入的錯誤級別 * 自定輸出的信息不受全局環境設置影響,始終會輸出到終端 */ const SPEEDX_ERR_LEVEL_NORMAL = 0; //常規信息 const SPEEDX_ERR_LEVEL_SUCCESS = 1; //突出信息 const SPEEDX_ERR_LEVEL_WARNING = 2; //警告信息 const SPEEDX_ERR_LEVEL_DANGER = 3; //危險信息 const SPEEDX_ERR_LEVEL_ERROR = 4; //錯誤信息 const SPEEDX_RETURN_OK = 1; //全局錯誤返回類中錯誤信息: 正確 const SPEEDX_RETURN_ERR = 0; //全局錯誤返回類中錯誤信息: 錯誤 const SPEEDX_RETURN_NODEFINE = -1;//全局錯誤返回類中錯誤信息: 未定義 /* ***speedx節點常量: ***調用主文件:_SPEEDX_CLASS_PHP_/class.speedx.php -> class speedx_node{} */ const SPEEDX_NODE_DOCTYPE = "_doctype_"; //doctype類型 const SPEEDX_NODE_STANDARD = "_standard_"; //標準對稱標簽 const SPEEDX_NODE_SINGLE = "_single_"; //單標簽內容 const SPEEDX_NODE_META = "_meta_"; //meta標簽 const SPEEDX_NODE_COMMENT = "_comment_"; //備注標簽 const SPEEDX_NODE_TEXT = "_text_"; //文本內容 const SPEEDX_NODE_VAR = "_var_"; //變量標簽,用于PHP內容替換 const SPEEDX_NODE_NULL = "_null_"; //空內容標簽 const SPEEDX_NODE_STYLE = "_style_"; //style標簽 const SPEEDX_NODE_SCRIPT = "_script_"; //腳本標簽 const SPEEDX_NODE_PHP = "_php_"; //保留的:php腳本標簽,用于后期擴展 const SPEEDXNODE_DOCTYPE = 1; const SPEEDXNODE_STANDARD = 2; const SPEEDXNODE_SINGLE = 4; const SPEEDXNODE_META = 8; const SPEEDXNODE_COMMENT = 16; const SPEEDXNODE_TEXT = 32; const SPEEDXNODE_VAR = 64; const SPEEDXNODE_STYLE = 128; const SPEEDXNODE_SCRIPT = 256; const SPEEDXNODE_PHP = 512; const SPEEDXNODE_NULL = 1024; /* ***doctype類型聲明: *** */ const DOCTYPE_HTML5 = ''; const DOCTYPE_HTML_4_01_STRICT = ''; const DOCTYPE_HTML_4_01_TRANSITIONAL = ''; const DOCTYPE_HTML_4_01_FRAMESET = ''; const DOCTYPE_XHTML_1_0_STRICT = ''; const DOCTYPE_XHTML_1_0_TRANSITIONAL = ''; const DOCTYPE_XHTML_1_0_FRAMESET = ''; const DOCTYPE_XHTML_1_1 = ''; /* ***HTML標簽列表 */ $SPEEDX_NODE_TYPE = []; $SPEEDX_NODE_TYPE[SPEEDX_NODE_DOCTYPE] = ["doctype

總結

以上是生活随笔為你收集整理的php去除html标签_用PHP操作DOM (一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。