4

这段代码:

$input = 'I love <3 PHP!';
echo strip_tags($input);

输出:

I love 

是否有一个 PHP 函数(或任何人的自定义函数)只会删除标签(这意味着正确关闭的标签),而不是前面的所有内容<

4

3 回答 3

1

尝试htmlspecialchars,它仍然会显示标签,但会转换为 html 实体

于 2013-05-23T10:48:18.823 回答
1

为什么 PHP 函数 strip_tags() 会删除不是标签的数据?

它在安全方面犯了错误。

如何避免这种情况?

如果您希望输入文本,请使用htmlspecialchars转义字符 <(和其他一些字符)而不是删除它们。

于 2013-05-23T10:48:27.037 回答
1

从 PHP 5 开始,Tidy 扩展通常在大多数编译的二进制文件中都可用。它不是 100% 有效,但在这种情况下可以帮助您。Tidy 尝试关闭字符串中所有未关闭的 HTML 标记。关闭它后,您可以忽略想要的标签。然后,您需要去掉 tidy 放入的最终标签。

整洁的文档

$str = tidy("I <3 PHP");

// second param ignores the closed tag <3>
$str = strip_tags($str, '<3>')

$str = str_replace('<3>', '<3', $str);

echo $str;
于 2013-05-23T10:55:52.533 回答