如何在PHP中使用黑名单剥离HTML标记?

如何在PHP中使用黑名单剥离HTML标记?,php,parsing,html-parsing,strip-tags,Php,Parsing,Html Parsing,Strip Tags,PHPstrip_标签使用白名单跳过一些您不想删除的标签。有人知道一些实现,但使用黑名单而不是白名单吗?试试LWC在php.net上发布的这个函数- 一个简单的复合正则表达式搜索就可以了(如果这仍然是关于您之前的问题): $html= preg#u replace(“#]*>#i”,”,$html); 请解释这一部分:[^>]*@texai:[^>]*是匹配HTML标记内部所有内容的常用方法。它匹配任意数量的非右尖括号的字符。regex部分[^…]表示一个。 <?php function

PHP
strip_标签
使用白名单跳过一些您不想删除的标签。有人知道一些实现,但使用黑名单而不是白名单吗?

试试LWC在php.net上发布的这个函数-


一个简单的复合正则表达式搜索就可以了(如果这仍然是关于您之前的问题):

$html=
preg#u replace(“#]*>#i”,”,$html);

请解释这一部分:[^>]*@texai:
[^>]*
是匹配HTML标记内部所有内容的常用方法。它匹配任意数量的非右尖括号的字符。regex部分
[^…]
表示一个。
<?php
function strip_only($str, $tags, $stripContent = false) {
    $content = '';
    if(!is_array($tags)) {
        $tags = (strpos($str, '>') !== false ? explode('>', str_replace('<', '', $tags)) : array($tags));
        if(end($tags) == '') array_pop($tags);
    }
    foreach($tags as $tag) {
        if ($stripContent)
             $content = '(.+</'.$tag.'[^>]*>|)';
         $str = preg_replace('#</?'.$tag.'[^>]*>'.$content.'#is', '', $str);
    }
    return $str;
}

$str = '<font color="red">red</font> text';
$tags = 'font';
$a = strip_only($str, $tags); // red text
$b = strip_only($str, $tags, true); // text
?> 
$html =
preg_replace("#</?(font|strike|marquee|blink|del)[^>]*>#i", "", $html);