如何将引号(',“)从特殊字符转换为通用字符,其他标记保持特殊?

时间:2015-10-31 03:59:27

标签: php html tags

在我的字符串中,我引用了(',")< tags >。我用了

htmlspecialchars($str, ENT_QUOTES);  

仅将单引号和双引号转换为常规文本。但不幸的是,它也在转换标签< , >。出于这个原因,即使我有

strip_tags("$desc","< b >< font >< i >< u >< br >"); 

这些允许的标签也显示为不能用作html标签的通用< and >标志。

总之,我希望将单引号和双引号显示为常规文本,并将允许的标记显示为html。

谢谢。

1 个答案:

答案 0 :(得分:0)

为什么不在htmlspecialchars()之前运行strip_tags()?

样品:

<?php
$input = '<b>allowed tag</b> " <font>not allowed tag</font>';

// XXX
$tmp = htmlspecialchars($input, ENT_QUOTES);
$result = strip_tags($tmp, '<b>');
var_dump($result);
// string(78) "&lt;b&gt;allowed tag&lt;/b&gt; &quot; &lt;font&gt;not allowed tag&lt;/font&gt;"

// Improved
$tmp = strip_tags($input, '<b>');
$result = htmlspecialchars($tmp, ENT_QUOTES);
var_dump($result);
// string(53) "&lt;b&gt;allowed tag&lt;/b&gt; &quot; not allowed tag"