有人可以告诉我为什么这不起作用吗?
$str = preg_replace("<font[^>]*>", '', $str);
CMS适用于Flash,现在客户端想要实现一个html网站。需要删除邪恶的内联字体标记以显示默认样式。
答案 0 :(得分:3)
你也可以试试这个。
$str = preg_replace('/(<font[^>]*>)|(<\/font>)/', '', $str);
答案 1 :(得分:0)
如果你想使用preg_replace看一下这个函数 (在此链接中,您将发现许多功能:http://php.net/manual/en/function.strip-tags.php)
这里支持剥离反向strip_tags函数的内容:
<?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
?>
答案 2 :(得分:0)
您的模式上没有任何分隔符。这应该有效:
$str = preg_replace('/<font[^>]*>/', '', $str);
强制性“不要使用正则表达式来解析HTML”。
答案 3 :(得分:0)