2013-08-07 48 views
0

由于某些原因,PHP的strig_tags()函数将从显式允许的标签中移除括号,当这些标签出现在属性中时。strip_tags在属性内删除允许的标签

例子:

<div data-contents="<p>Hello!</p>"></div> 

成为

<div data-contents="pHello!/p"></div> 

我知道,我知道。这不一定是好的做法。

无论有什么想法?

+3

将HTML嵌入属性值并不一定是好习惯。所以...当你有无数更好的方法时,你为什么要这样做呢?只是好奇。而且,为什么你在这种情况下使用strip_tags呢? –

回答

2

由于在man page状态的警告:**Because strip_tags() does not actually validate the HTML, partial or broken tags can result in the removal of more text/data than expected.

如果你希望嵌入属性在HTML里面,必须正确编码,例如您应该有&lt;p&gt;Hello!&lt;/p&gt;

条形标签是“哑”,它将删除任何类似标签的内容,而不管标签在文本中出现的位置,或者它会导致页面破损。

+0

这正是。如果你使用'strip_tags'的原因是不允许某些形式的HTML,那么我宁愿建议你使用一个库,比如AntiSamy(不知道是否有PHP端口/等价物) –