2016-12-28 115 views
-2

我有一个PHP的strip_tags函数的问题。我有一个包含html标记白名单的列表。从像函数生成的列表:我不能使用PHP的strip_tags功能与其他功能

setAllowedHtmlTags(); 

和输出这一功能是:

"<a><table><br>" 

我想消除其他HTML标签,但是这一点。所以我用strip_tags的功能如下:

echo strip_tags("sample text", setAllowedHtmlTags()); 

这里是我的功能:

function setAllowedHtmlTags() 
{ 
    $db  = new PDO('mysql:host=' . host . ';dbname=' . DBNAME_SCHEMA, user, password); 
    $sql = "SELECT html_tag FROM allowed_html_tags_table"; 
    $query = $db->query($sql); 

    $tagList = ""; 

    if ($query->rowCount()){ 
     foreach($query as $row){ 
      $tagList .= $row['html_tag']; 
     } 
    } 

    return htmlentities($tagList); 
} 

但它不工作。 strip_tags函数删除我的白名单中的所有html标记,包括地雷。你能帮我解决这个问题吗?

+7

添加'setAllowedHtmlTags'功能 – Dekel

+3

的代码[似乎按预期方式工作(https://3v4l.org/RvojD) –

+0

不是真正重要的,但为什么你会用一个函数只是返回'”


“',为什么不设置'const'或什么的。 –
Pitchinnate

回答

-1

您的功能setAllowedHtmlTags()是否真的回传您告诉我们的内容? 尝试一个var_dump(setAllowedHtmlTags());以查看函数真正返回的内容。

或者您可能想拨打电话g etAllowedHtmlTags()?

+0

是的,它返回我想要的字符串。 –

0

好吧,我发现问题,返回值与html_entity_decode()函数,而不是htmlentities()函数为我工作。