需求:在將乙個字串寫入資料庫的過程中,我們常常面對乙個問題:字串中含有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 不...