PHP字符串不允许<和>字符

Amo*_*Amo 5 php string

根据以下示例,我的代码中有一个字符串:

<?php
$find = '<tag';
$string = 'blah blah <tag=something>';
?>
Run Code Online (Sandbox Code Playgroud)

很简单,但是当我尝试回显字符串时,它不喜欢<或>字符.所有得到回应的是:

等等等等

所以,基本上我猜我需要转义这些字符,让他们在工作PHP但林不知道到底如何.我正在将它用于模板系统,因此在html文件中可以使用以下命令包含文件:

<include="filename.html">
Run Code Online (Sandbox Code Playgroud)

所以我不需要随时在屏幕上显示<和>字符,我只需要阅读文件,找到这些标签的实例并做一些魔术.我已经完成了所有这部分工作,但它只是包含多于/少于运算符的任何字符串,似乎无法正常工作.

有任何想法吗?

sle*_*anc 13

使用PHP,您可以生成HTML标记,因此您必须找到区分HTML元素字符(<&>)的方法.HTML中存在特殊的字符序列,称为HTML实体.这些是用&符号,某种速记和以分号结尾的描述.

这里有些例子:

&gt;     : > (greater-than)
&lt;     : < (less-than)
&amp;    : & (ampersand)
&raquo;  : » (right angle quote marks)
&eacute; : é (e acute)
Run Code Online (Sandbox Code Playgroud)

几乎所有的角色都可以用这样的实体来表示,但很快就会变得单调乏味.您只需记住<和>,以及&for URL.

如果您的意图是显示小于/大于标志,那么您的代码应该像这样重写.

<?php
$find = '&lt;tag';
$string = 'blah blah &lt;tag=something&gt;';
?>
Run Code Online (Sandbox Code Playgroud)

如其他答案中所述,您可以使用该函数htmlspecialchars()转换变量中的字符(例如,来自用户输入).

<?php echo htmlspecialchars($string); ?>
Run Code Online (Sandbox Code Playgroud)

将显示blah blah <tag=something>以在Web浏览器中查看.另外,如果您在命令行中使用PHP,则不需要使用此功能.


tek*_*agi 5

您需要使用 HTML 字符来避免将其转换为 HTML。

所以:

echo htmlspecialchars("<hello>");
Run Code Online (Sandbox Code Playgroud)

  • 从您引用的 PHP 文档中: *在需要在数据库查询等中引用的字符之前返回一个带有反斜杠的字符串。* 这与这个问题有什么关系? (4认同)