当我们从一个页面上抓取/读取数据时,经常会出现不需要HTML标记的纯文本数据的需求。或者在自己的程序中需要过滤掉HTML标记以确保输出的安全性和数据的准确性。那么在这种情况下,我们就可以使用PHP的strip_tags函数,它可以移除字符串中全部或部分的HTML标签。
一、strip_tags函数的基本语法
mixed strip_tags ( string $string [, string $allowable_tags ] )
在上面的函数语法中:
- 第一个参数 string 是必需的,表示输入的字符串,该项不能省略。
- 第二个参数 allowable_tags 是可选的,它定义了允许出现的标签。如果别了这个参数,则该函数会移除所有的标签。
- 函数返回一个处理后的字符串,如果出错返回FALSE。
二、strip_tags函数的使用方法
strip_tags函数非常简单易用,下面是一个例子:
$str = "带 Html 标签的字符串"; $strtags = strip_tags($str); // 移除 $str 中的所有标记以下输出结果: echo $strtags;
输出结果是一个不带HTML标签的纯文本字符串。
三、移除指定的HTML标签
除了移除所有的HTML标记外,如果你希望只移除某些指定的HTML标签或属性,可以在函数的第二个可选参数中添加这些标签,例如:
$str = "这是一个有些HTML标记的文字。
"; $strtags = strip_tags($str, ''); echo $strtags;
这个例子中,\
和\标签被允许放行,而\被移除了。
四、保留某些HTML标签和其中的内容
相比较之下,有时候我们是希望保留某些HTML标签和其中的内容,该怎么做呢?可以采用strip_tags函数的逆操作,把我们需要的标记或者内容替换成标记,具体实现如下:
function stripTagsContent($text, $tags = '', $invert = FALSE) {preg_match_all('//si', trim($tags), $tags);
$tags = array_unique($tags[1]);if (is_array($tags) && count($tags) > 0) {
if ($invert == FALSE) {
$text = preg_replace('/]*)?>/si', '', $text);
}else {
$text = preg_replace('/]*)?>)([\s\S]*?)>/si', '', $text);
}
} elseif ($invert == FALSE) {
$text = preg_replace('/]*)?>)(.*?)>/si', '', $text);
}return $text;
}$str = '
这是一个有些HTML标记的文字。
原创文章,作者:THLM,如若转载,请注明出处:https://www.506064.com/n/131612.html