-2

我正在做项目,在主页上我们显示用户的详细信息,每个用户自己更新它的详细信息,我们还允许详细的 HTML 标签。

但我面临的问题是,如果人们添加一些 HTML 细节,比如

<p><span style="color:#4c4c4c;font-family:Verdana;">Graphic Designer. Contact ***** .</span></p>

但是在索引页面上,我们显示的细节很少,它来到了这样的主页

<p><span style="color:#4c4c4c;font-family:Verda

这扰乱了主页的所有结构。

我试过PHP函数

strip_tags

这对我不起作用,我还编写了自己的函数来去除主页上的这些标签

function strip_html_tags( $text )
{
    $text = preg_replace(
        array(
          // Remove invisible content
            '@<head[^>]*?>.*?</head>@siu',
            '@<style[^>]*?>.*?</style>@siu',
            '@<script[^>]*?.*?</script>@siu',
            '@<object[^>]*?.*?</object>@siu',
            '@<embed[^>]*?.*?</embed>@siu',
            '@<applet[^>]*?.*?</applet>@siu',
            '@<noframes[^>]*?.*?</noframes>@siu',
            '@<noscript[^>]*?.*?</noscript>@siu',
            '@<noembed[^>]*?.*?</noembed>@siu',

            '@</?((address)|(blockquote)|(center)|(del))@iu',
            '@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu',
            '@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu',
            '@</?((table)|(th)|(td)|(caption))@iu',
            '@</?((form)|(button)|(fieldset)|(legend)|(input))@iu',
            '@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu',
            '@</?((frameset)|(frame)|(iframe))@iu',
        ),
        array(
            ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',"$0", "$0", "$0", "$0", "$0", "$0","$0", "$0",), $text );


    return strip_tags( $text);
}

这也没有用。

我需要的是:剥离所有 html 标签以便在主页上正确显示。

谢谢

4

3 回答 3

2

strip_tags()内置在 PHP 中

HTML Purifier是更强大的解决方案

于 2012-06-28T22:13:56.607 回答
0

您是否考虑过简单地使用html_entities()?这将 '<' 替换为 '<' 和 '>' 和 '>' 除其他事项外。它允许您将其回显到页面,而不必过多担心它会干扰页面。

于 2012-06-28T22:16:48.187 回答
0

您的个人信息不只是保存为实体而不是纯文本吗?这可以解释为什么 strip_tags 不起作用。

在这种情况下,使用:html_entity_decode来显示实际的 HTML

于 2012-06-28T22:19:48.337 回答