正規表示式去除HMTL標籤例項詳解

2021-07-26 05:42:06 字數 1683 閱讀 7267

需求:在將乙個字串寫入資料庫的過程中,我們常常面對乙個問題:字串中含有html標籤,比如:換行

,空格,等其他html標籤(a,p,div)等,我們最好能夠從前台傳入的字串中,將這些字元過濾掉,再存入資料庫。

/<([a-z]+)([^<>]+)*(>(.*)<\/

\\1>|\/>)/

< //匹配標籤開始

([a-z]+) // 子模式① : 匹配 標籤名,+ 代表 >=1,至少乙個

([^<>\/]+)* //子模式②: 匹配 屬性值;

*標識可以有多個屬性 ; 原子集說明該屬性中不能含有< 和 >

(>(.*)<\/\\1>|\/>)

// 子模式③: 匹配結束標籤 如: >phpa> , />,

// 此處注意,或 | 元字元表明 結束標籤.

//有兩種匹配方式,分別為成對標籤

,或者直接關閉的標籤type="text"/>

(.*) // 子模式③ 中的子模式,子模式④ : 匹配標籤內容,

//比如 php,

中的

下面,我將寫乙個正則替換html標籤的例項,詳情解釋已寫在注釋中

$str = "phpc#,精神病人思路廣  

房天下國際網組";

$reg = "/<([a-z]+)([^<>]+)*(>(.*)<\/\\1>|\/>)/";

//這是我優化之後的正規表示式,可以 匹配 成對的標籤和非常對的標籤

比如:hello,"#",target="_blank"/>

$str1 = " 

";//匹配空格 和換行

$reg1 = "/( )|(

)/";

if (preg_match_all($reg,$str,$arr,2))

$newstr = preg_replace([$reg,$reg1],["\$4",""],$str);//正則替換函式

echo

$newstr;

// preg_replace 正則替換函式

/* @pattern : 匹配模式,可以為單個匹配,也可以為陣列

@replacement:替換後 的內容,可以為陣列,若為陣列 ,將與前面的匹配模式對應替換

@subject : 源內容,要替換的字串

*///下面的函式沒啥用,方便檢視是如何進行替換的。

//可以分別看一下一下,$reg1,$reg2,$reg3對 $str1,$str2,$str3 的處理

if (preg_match_all($reg1,$str,$arr,2))

//preg_match_all 正則匹配函式

/* @parttern: 匹配模式

@replacement : 替換後的內容

@match: 匹配後的結果,陣列。

*/

執行結果(替換結果):

phpc#,精神病人思路廣 房天下國際網組

array(4) 

[1]=>

array(5)

[2]=>

array(4)

[3]=>

array(4)

}

正規表示式去除html標籤

正確使用正規表示式過濾字串,講給工作帶來很大的方便。以下是以js標籤為例 script echo 去除所有js preg replace script script echo 將script標籤的內容列印出來 preg replace script script 解釋 開始 和 結束標示 非 字串 ...

正規表示式例項

正規表示式例項 1.驗證數字 只能輸入1個數字 表示式 d 描述 匹配乙個數字 匹配的例子 0,1,2,3 不匹配的例子 2.只能輸入n個數字 表示式 d 例如 d 描述 匹配8個數字 匹配的例子 12345678,22223334,12344321 不匹配的例子 3.只能輸入至少n個數字 表示式 ...

正規表示式例項

正規表示式語法 字元匹配 正規表示式 china 匹配 chinaabc 句點符號 正規表示式 t.n 匹配 tan,tbn,tcn,t n,t n等 方括號符號 方括號只有裡面指定的字元才參與匹配,也就是說,正規表示式 t aeio n 只匹配 tan ten tin 和 ton 但 toon 不...