html相关正则表达式

在PHP中,过滤HTML标签通常涉及使用preg_replace函数配合正则表达式。以下是一些常用的正则表达式示例,用于过滤或处理HTML标签的不同场景:

  1. 移除所有HTML标签:
   $text = preg_replace('/<[^>]*>/', '', $text);

这个表达式会移除所有形如<...>的HTML标签,包括开始标签、结束标签以及自封闭标签。

  1. 保留部分安全标签 (比如只保留<b>, <i>, <u>, <br>, 和 <p>):
    首先定义不希望被移除的标签列表,然后用正则表达式排除这些标签:
   $allowedTags = '<b><i><u><br><p>';
   $text = preg_replace('/<(?!(?:' . implode('|', array_map('preg_quote', explode('<', $allowedTags), array_fill(0, count(explode('<', $allowedTags)), ''))) . ')>)[^>]*>/i', '', $text);

注意:这个表达式相对复杂,用于更精细的控制哪些标签允许保留。

  1. 移除script和style标签:
    如果你只想移除<script><style>标签以防止执行JavaScript或CSS,可以使用:
   $text = preg_replace('/<script[^>]*?>.*?<\/script>|<style[^>]*?>.*?<\/style>/is', '', $text);
  1. 移除HTML注释:
   $text = preg_replace('/<!--(.|\s)*?-->/', '', $text);
  1. 提取HTML标签内的文本内容:
    虽然这不是直接移除标签,但有时也很有用:
   preg_match_all('/<[^>]*>(.*?)<\/[^>]*>/si', $html, $matches);
   // $matches[1] 包含了所有标签内的文本

Was this helpful?

0 / 0

发表回复 0