前言
php經常需要去匹配html標籤,然而由於html標籤可能有很多個重複的,甚至可能含有一些巢狀,因此匹配困難。
一、php正則問號的用法
1、只想匹配字元「?」
需要進行轉義,即\?
2、用於非貪婪匹配
即最近匹配:【貪婪】
模式:a.*c
字串:abcabc
匹配結果:abcabc
【非貪婪】
模式:a.*?c
字串:abcabc
匹配結果:abc
常用:(1)*? 重複任意次,但盡可能少
(2)+?重複1次或更多次,但盡可能少
(3)?? 重複0次或1次,但盡可能少
(4)? 重複n到m次,但盡可能少
(5)? 重複n次以上,但盡可能少
3、不捕捉模式?:
意思就是對於不想要用()捕捉到的資料,加乙個?:即可,例如:模式:(?:aaa)(bbb)
匹配結果: $1=bbb
aaa不會被$1捕捉到
二、php匹配任意字元(含換行符)的bug
1、[.\n]*?
完全不行……原因未知
2、.*?
可以,需要在後面加/s,複習:
(1)i 不區分大小寫
(2)s 模式中的.匹配所有字元,包括換行符
3、(.|\n)*?
感覺上是可以的,但是對於很長很長的字串,比如文章《三國高階輔助_v1.0》的內容,就不行,沒匹配完就結束了,導致文章無法顯示。
據《關於php中正則匹配包括換行符在內的任意字元的問題總結》說,是和php所繫結的pcre庫版本有關,可我用得是php7.0啊……
4、[\s\s]*?
最佳匹配方式,這裡的
(1)\s 匹配任意空白字元,包括換行符, 等價於[\f\n\r\t\v]
(2)\s匹配任意非空白字元,等價於 ^[\f\n\r\t\v]
合起來就是匹配所有字元。
三、匹配html標籤:pre code
需要匹配
,只要文字不出現這個標籤,就可以這樣匹配:/([\s\s]*?)/i
html頁面清空標籤裡的內容
一 背景 由於頁面展示東西太多,而且可能相似的內容太多,肉眼一眼分清有點小難度,所以為了更好的展示需要看到的內容,我們要清理標籤中的內容 二 舉例 清除內容 function clearwindow 以上是乙個比較好的清除標籤內容的方法,是由jquery的empty 方法實現的。當然還有其他的方法,...
php對html標籤的處理
處理html標籤的話 這裡用到了 htmlspecialchars 函式 引數為 要處理的字串 返回值為 處理後的字元 詳情見 php手冊 使用 htmlspecialchars去處理 字串 new htmlspecialchars test echo new test 如何去重新轉義回來。這裡呢。...
php 處理html標籤的方法
清除空格和換行 str trim str 清除字串兩邊的空格 str strip tags str,利用php自帶的函式清除html格式 str preg replace t str 使用正規表示式替換內容,如 空格,換行,並將替換為空。str preg replace r n str str pr...