2011-11-21 37 views
5

我有我的代码串按照下面的例子:PHP字符串不允许< and >字符

<?php 
$find = '<tag'; 
$string = 'blah blah <tag=something>'; 
?> 

很简单,但是当我尝试呼应琴弦,它不顺心的<或>字符。所有这一切得到的echo'ed是:

等等等等

所以,基本上我猜我需要转义这些字符,让他们在工作PHP但林不知道到底如何。我用这一个模板系统,所以在HTML文件一个文件可以包含使用:

<include="filename.html"> 

所以我并不需要随时在屏幕上显示的<和>字符,我只需要读取文件,找到这些标签的实例并做一些魔术。我已经掌握了所有这些部分的工作原理,但它只是包含多于/少于运算符的任何字符串,而这些运算符看起来没有问题。

任何想法?

+0

你正在查看页面的来源,还是只看到浏览器显示的视觉效果? –

+0

< and >不需要显示到屏幕上,它只是存储在一个字符串变量中。 – Amo

+0

[在PHP中打印小于和大于符号]可能的副本(http://stackoverflow.com/questions/6916023/print-less-than-and-greater-than-symbols-in-php) – mario

回答

3

您需要使用HTML字符以避免它变成HTML。

这样:

echo htmlspecialchars("<hello>"); 
+4

从您引用的PHP文档:*在数据库查询等需要引用的字符之前返回带反斜杠的字符串。*与此有关的部分是什么题? –

+0

哎呀! @David是对的 – tekknolagi

+0

这个函数根本不影响'<'括号。这是为了逃避'和“字符串 –

8

使用PHP可以生成HTML标记,所以你必须找到区分HTML元素字符的方法(< &>)。在HTML中存在特殊的字符序列,称为HTML entities。这些用“&”符号描述,某种简写形式以分号结尾。

下面是一些例子:

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

几乎所有的字符,可以用这样的实体来表示,但很快变得单调乏味。您只需记住网址<和>,再加上&。

如果您的意图是显示小于/大于号的符号,您的代码应该像这样重写。

<?php 
$find = '&lt;tag'; 
$string = 'blah blah &lt;tag=something&gt;'; 
?> 

在其他的答案提到的,可以使用函数htmlspecialchars()将字符转换在一个变量(例如,来自用户的输入)。

<?php echo htmlspecialchars($string); ?> 

将显示blah blah <tag=something>用于观看在Web浏览器。否则,例如,如果您在命令行上使用PHP,则不需要使用此功能。

相关问题