在PHP中,过滤HTML标签通常涉及使用preg_replace
函数配合正则表达式。以下是一些常用的正则表达式示例,用于过滤或处理HTML标签的不同场景:
- 移除所有HTML标签:
$text = preg_replace('/<[^>]*>/', '', $text);
这个表达式会移除所有形如<...>
的HTML标签,包括开始标签、结束标签以及自封闭标签。
- 保留部分安全标签 (比如只保留
<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);
注意:这个表达式相对复杂,用于更精细的控制哪些标签允许保留。
- 移除script和style标签:
如果你只想移除<script>
和<style>
标签以防止执行JavaScript或CSS,可以使用:
$text = preg_replace('/<script[^>]*?>.*?<\/script>|<style[^>]*?>.*?<\/style>/is', '', $text);
- 移除HTML注释:
$text = preg_replace('/<!--(.|\s)*?-->/', '', $text);
- 提取HTML标签内的文本内容:
虽然这不是直接移除标签,但有时也很有用:
preg_match_all('/<[^>]*>(.*?)<\/[^>]*>/si', $html, $matches);
// $matches[1] 包含了所有标签内的文本
Was this helpful?
0 / 0