此代码:
$input = 'I love <3 PHP!';
echo strip_tags($input);
输出:
I love
是否有PHP函数(或任何人的自定义函数)只删除标记(表示正确关闭的标记),而不是<
之前的所有内容?
答案 0 :(得分:1)
尝试htmlspecialchars,它仍会显示标签,但会转换为html实体
答案 1 :(得分:1)
为什么PHP函数strip_tags()会删除不是标记的数据?
它在安全方面犯了错误。
如何避免这种情况?
如果您希望输入文字,请使用htmlspecialchars
转义 <
字符(以及其他一些字符),而不是将其删除。
答案 2 :(得分:1)
从PHP 5开始,Tidy扩展通常在大多数已编译的二进制文件中可用。它不是100%有效但在这种情况下可以帮助你。 Tidy尝试关闭字符串中所有未关闭的HTML标记。关闭它后,您可以忽略所需的标签。然后,您需要删除整齐放入的最终标记。
$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;