Home  >  Article  >  Backend Development  >  How to remove HTML tags in PHP?

How to remove HTML tags in PHP?

Guanhui
GuanhuiOriginal
2020-06-15 15:50:183852browse

How to remove HTML tags in PHP?

PHP如何去掉HTML标签?

在PHP中可以使用“strip_tags()”函数去掉HTML标签,该函数作用是从字符串中去除HTML和PHP标记,其语法是“strip_tags(str) ”,其参数str代表的是要去除标记的字符串,返回值为处理后的字符串。

演示示例

<?php
$text = &#39;<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>&#39;;
echo strip_tags($text);
echo "\n";
// 允许 <p> 和 <a>
echo strip_tags($text, &#39;<p><a>&#39;);
?>

以上例程会输出:

Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>

使用示例

<?php
function strip_tags_content($text, $tags = &#39;&#39;, $invert = FALSE) {

  preg_match_all(&#39;/<(.+?)[\s]*\/?[\s]*>/si&#39;, trim($tags), $tags);
  $tags = array_unique($tags[1]);
   
  if(is_array($tags) AND count($tags) > 0) {
    if($invert == FALSE) {
      return preg_replace(&#39;@<(?!(?:&#39;. implode(&#39;|&#39;, $tags) .&#39;)\b)(\w+)\b.*?>.*?</\1>@si&#39;, &#39;&#39;, $text);
    }
    else {
      return preg_replace(&#39;@<(&#39;. implode(&#39;|&#39;, $tags) .&#39;)\b.*?>.*?</\1>@si&#39;, &#39;&#39;, $text);
    }
  }
  elseif($invert == FALSE) {
    return preg_replace(&#39;@<(\w+)\b.*?>.*?</\1>@si&#39;, &#39;&#39;, $text);
  }
  return $text;
}
?>
<?php
function stripUnwantedTagsAndAttrs($html_str){
  $xml = new DOMDocument();
//Suppress warnings: proper error handling is beyond scope of example
  libxml_use_internal_errors(true);
//List the tags you want to allow here, NOTE you MUST allow html and body otherwise entire string will be cleared
  $allowed_tags = array("html", "body", "b", "br", "em", "hr", "i", "li", "ol", "p", "s", "span", "table", "tr", "td", "u", "ul");
//List the attributes you want to allow here
  $allowed_attrs = array ("class", "id", "style");
  if (!strlen($html_str)){return false;}
  if ($xml->loadHTML($html_str, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD)){
    foreach ($xml->getElementsByTagName("*") as $tag){
      if (!in_array($tag->tagName, $allowed_tags)){
        $tag->parentNode->removeChild($tag);
      }else{
        foreach ($tag->attributes as $attr){
          if (!in_array($attr->nodeName, $allowed_attrs)){
            $tag->removeAttribute($attr->nodeName);
          }
        }
      }
    }
  }
  return $xml->saveHTML();
}

推荐教程:《PHP教程

The above is the detailed content of How to remove HTML tags in PHP?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn