【发布时间】:2014-01-26 06:13:13
【问题描述】:
我知道并知道如何将 strip_tags() 与 php 一起使用,但我想删除这些标签中包含的所有样式。
我只需要保留以下标签
<p></p>
<a></a>
<br />
不确定 br 是否被视为带有 strip_tags 的标签,因此我将其包含在内。
之前的示例:
<p style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 13px; padding: 0px; margin: 3px 0px 10px; color: rgb(0, 0, 0); line-height: 16px;">
之后:
<p>
问题是我不确定我是否可以使用条形标签来完成此操作,或者我是否还需要包含一个带有一些 REGEX 的 preg_replace。此外,样式有时会有所不同,因此它需要能够处理任何事情。
我在 php.net 上找到了一个示例,但似乎不起作用
function strip_tags_content($text, $tags = '', $invert = FALSE) {
preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags);
$tags = array_unique($tags[1]);
if(is_array($tags) AND count($tags) > 0) {
if($invert == FALSE) {
return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text);
}
else {
return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text);
}
}
elseif($invert == FALSE) {
return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text);
}
return $text;
}
?>
<?=strip_tags_content($row['notes'])?></p>
【问题讨论】:
-
为什么不试试这个呢?
echo strip_tags($text, '<p><a><br>'); -
请也发布您的相关PHP代码。
-
strip_tags()将标记视为<和第一个空格或>之间的不区分大小写的字符串。 -
首先,remove all attributes,然后使用
strip_tags()。 -
正确,所以我的猜测是我需要先用一些正则表达式 preg_replace
标签: php