我有一个问题,PHP 在使用strip_tags
时将<<
视为标签。我有一些文本,我正在剥离格式,然后将内容保存到文件中。如果我只有一个<
那么它不会剥离它。
我使用strip_tags
的原因是我显示了一个带有一些 HTML 格式(颜色(的网页,然后我希望输出与用户在网页上可以看到的文件相同的输出 - 但没有颜色等的 HTML 标签。
这里的目的是从我的文本中删除所有已知/有效的 HTML 标签,其余的保持不变。这不是防止恶意代码显示在网页上的安全措施。
我的PHP代码是:
$txt = "this is << line 2 > but it does not work";
$fline = strip_tags($txt);
$fh = fopen("file.txt","w");
fwrite($fh,$fline);
fclose($fh);
如果我有这个输入,只有一个<
那么文件中的输出将与输入文本完全相同,这也符合预期:
this is < line 1 > and it works
但是当我有这个输入文本时:
this is << line 2 > but it does not work
.. 然后我文件中的输出将剥离虚构标签中的<<
和内容:
this is but it does not work
为什么 PHP 将<<
视为标签(但不是<
(,以及我如何允许<<
,因为它不起作用:
$fline = strip_tags($txt,"<<");
您很可能会回答">但是您为什么首先使用strip_tags" - 我这样做是因为它到目前为止一直对我有用;-(如果这无法修复,我可能需要重写它背后的逻辑,但至少我有一个解释,为什么<<
被视为一个标签,而<
不是。
尝试将<<
和>>
替换为 HTML 实体,然后strip_tags()
会省略它们,但浏览器会将它们显示为<<
和>>