PHP strip_tags保留多个HTML标签的方法

yipeiwu_com7年前PHP代码库

本文介绍了PHP strip_tags函数保留多个HTML标签的方法,可以使用第二个参数来设置不需要删除的标签,主要涉及到strip_tags的第二个参数

strip_tags 函数

语法
string strip_tags ( string str [, string allowable_tags] )
返回一个去除了HTML标签的字符串;可以使用第二个参数来设置不需要删除的标签。

使用方法:

前提:假如现在有这样一个字符串,

复制代码 代码如下:

$str = "<p>我来自<b><a href='//www.jb51.net'>【宜配屋www.yipeiwu.com】</a></b></p>";

1,不保留任何HTML标签,代码会是这样:

复制代码 代码如下:

echo strip_tags($str);
// 输出:我来自【宜配屋www.yipeiwu.com】

2,只保留<a>一个标签的话,只需要将<a>字符串写到strip_tags的第二个参数中:
 

复制代码 代码如下:

echo strip_tags($str, "<a>");
// 输出:我来自<a href='//www.jb51.net'>【宜配屋www.yipeiwu.com】</a>

3,要保留<p>与<b>…多个标签,只需要将多个标签用空格分隔后写到strip_tags的第二个参数中:
 

复制代码 代码如下:

echo strip_tags($str, "<p> <b>");
// 输出:<p>我来自<b>【宜配屋www.yipeiwu.com】</b></p>

如果要使用php删除html标记中的特定标签呢?

这个就需要代码来实现了,如下:

function strip_selected_tags($text, $tags = array()) {
  $args = func_get_args();
  $text = array_shift($args);
  $tags = func_num_args() > 2 ? array_diff($args, array($text)) : (array) $tags;
  foreach($tags as $tag) {
    if (preg_match_all('/<'.$tag.
        '[^>]*>([^<]*)</'.$tag.
        '>/iu', $text, $found)) {
      $text = str_replace($found[0], $found[1], $text);
    }
  }

  return preg_replace('/(<('.join('|', $tags).
    ')( | |.)*/>)/iu', '', $text);
}

$str = "[url="] 123[/url]";
    echo strip_selected_tags($str, array('b'));

相关文章

php中debug_backtrace、debug_print_backtrace和匿名函数用法实例

本文实例讲述了php中debug_backtrace、debug_print_backtrace和匿名函数用法。分享给大家供大家参考。具体分析如下: debug_print_backtr...

php pack与unpack 摸板字符字符含义

format 参数的可能值: a - NUL-padded string A - SPACE-padded string h - Hex string, low nibble first...

PHP 上传文件的方法(类)

复制代码 代码如下: /** * 图片上传方法 * $maxsize=500000 = 500k; * $updir="up/"; * $upfile=$_FILES["file_img...

利用php+mcDropdown实现文件路径可在下拉框选择

最近用php进行文件目录信息读取,在网上弄到下面一段代码://获取指定目录下的文件列表//$path 指定的目录,默认为当前目录//$ifchild 是否显示子目录文件列表,默认不显示/...

关于crontab的使用详解

使用crontab定时执行php代码,例  每隔十分钟执行一次:/10 * * * * wget -q --sqider http://******一、在Crontab中使用P...