正则表达式去除HMTL标签实例详解

前端之家收集整理的这篇文章主要介绍了正则表达式去除HMTL标签实例详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

需求:在将一个字符串写入数据库的过程中,我们常常面对一个问题:字符串中含有html标签,比如:换行<br>,空格&nbsp,等其他html标签(a,p,div)等,我们最好能够从前台传入的字符串中,将这些字符过滤掉,再存入数据库

正则表达式

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

正则表达式详解

  1. < //匹配标签开始 ([a-z]+) // 子模式① : 匹配 标签名,+ 代表 >=1,至少一个
  2.  
  3. ([^<>\/]+)* //子模式②: 匹配 属性值;
  4. *标识可以有多个属性 ; []原子集说明该属性中不能含有< 和 >
  5.  
  6. (>(.*)<\/\\1>|\/>)
  7. // 子模式③: 匹配结束标签 如: >PHP</a>,/>,
  8. // 此处注意,或 | 元字符表明 结束标签.
  9. //有两种匹配方式,分别为成对标签<span><span>,或者直接关闭标签<input type="text"/>
  10.  
  11. (.*) // 子模式③ 中的子模式,子模式④ : 匹配标签内容
  12. //比如 PHP<span><br><span> 中的<br>

替换Html标签实例

下面,我将写一个正则替换html标签的实例,详情解释已写在注释中

  1. $str = "<a href='www.baidu.com'>PHP</a>C#,精神病人思路广&nbsp <span><br></span>&nbsp<br/> &nbsp<a href='#' target='_blank'/>&nbsp房天下<br>国际网组";
  2.  
  3. $reg = "/<([a-z]+)([^<>]+)*(>(.*)<\/\\1>|\/>)/";
  4. //这是我优化之后的正则表达式,可以 匹配 成对的标签和非常对的标签
  5. 比如:<html>hello</hello>,<a href="#",target="_blank"/>
  6.  
  7. $str1 = "&nbsp<br>";//匹配空格 和换行
  8. $reg1 = "/(&nbsp)|(<br>)/";
  9.  
  10. if (preg_match_all($reg,$str,$arr,2)){
  11. var_dump($arr);
  12. }
  13. $newstr = preg_replace([$reg,$reg1],["\$4",""],$str);//正则替换函数
  14. echo $newstr;
  15.  
  16.  
  17. // preg_replace 正则替换函数
  18. /* @pattern : 匹配模式,可以为单个匹配,也可以为数组 @replacement:替换后 的内容,可以为数组,若为数组 ,将与前面的匹配模式对应替换 @subject : 源内容,要替换的字符串 */
  19.  
  20.  
  21.  
  22. //下面的函数没啥用,方便查看是如何进行替换的。
  23. //可以分别看一下一下,$reg1,$reg2,$reg3对 $str1,$str2,$str3 的处理
  24.  
  25. if (preg_match_all($reg1,2)){
  26. echo "<pre>";
  27. var_dump($arr);//打印匹配详情
  28. echo "</pre>";
  29. }
  30. //preg_match_all 正则匹配函数
  31. /* @parttern: 匹配模式 @replacement : 替换后的内容 @match: 匹配后的结果,数组。 */

运行结果(替换结果):

  1. PHPC#,精神病人思路广 房天下国际网组

正则匹配详情

  1. array(4) {
  2. [0]=>
  3. array(5) {
  4. [0]=>
  5. string(38) "<a href='www.baidu.com/search'>PHP</a>"//匹配结果
  6. [1]=>
  7. string(1) "a"//子模式①,匹配标签
  8. [2]=>
  9. string(28) " href='www.baidu.com/search'"//子模式②,匹配标签属性
  10. [3]=>
  11. string(8) ">PHP</a>"//子模式③,匹配结束标签
  12. [4]=>
  13. string(3) "PHP" //子模式④,匹配标签内容(成对标签的前提下)
  14. }
  15. [1]=>
  16. array(5) {
  17. [0]=>
  18. string(17) "<span><br></span>"
  19. [1]=>
  20. string(4) "span"
  21. [2]=>
  22. string(0) ""
  23. [3]=>
  24. string(12) "><br></span>"
  25. [4]=>
  26. string(4) "<br>"
  27. }
  28. [2]=>
  29. array(4) {
  30. [0]=>
  31. string(5) "<br/>"
  32. [1]=>
  33. string(2) "br"
  34. [2]=>
  35. string(0) ""
  36. [3]=>
  37. string(2) "/>"
  38. }
  39. [3]=>
  40. array(4) {
  41. [0]=>
  42. string(29) "<a href='#' target='_blank'/>"
  43. [1]=>
  44. string(1) "a"
  45. [2]=>
  46. string(25) " href='#' target='_blank'"
  47. [3]=>
  48. string(2) "/>"
  49. }
  50. }

猜你在找的正则表达式相关文章