添加“<”时在字符串前面它不再显示

时间:2011-01-30 10:16:00

标签: php string

当我在字符串之前添加'小于< '时,会发生这种情况,因为前面的字符串已经消失了[当我 echo 我们的 PHP代码。

E.g:
$search = trim('wdisappear W');  //  all the words were disappeared when < in front
$search = explode(" ", $search); //
$sizeof_search = count($search);  //


for($i = 0; $i < $sizeof_search; $i++){
    $l = strlen($search[$i]);
    echo '<'.$search[$i].'<'.$l;
}

当我在 firefox 中打开php文件时。 'wdisappear W'不会出现!为什么?

我怎样才能把

  

&LT;

在前面?

非常感谢!!

3 个答案:

答案 0 :(得分:7)

那是因为<打开了一个html元素。这将导致文本的一部分不可见,因为FF认为它是HTML标记。通过输出&lt; html实体来逃避它,或使用htmlspecialchars函数为您转义输出。

答案 1 :(得分:4)

默认情况下,PHP将内容提供为text/html,并在HTML <中打开标记。因此,您的内容将被解释为无效标记,并且不会显示。你应该使用&lt;来逃避它。还有其他保留字符需要编码。您可以使用htmlspecialchars一次完成所有操作。

或者,您可以将内容作为text/plain投放,不需要任何转义。 (在缺点方面,显然你不能在那里使用HTML。)

答案 2 :(得分:3)

字符<在HTML中具有特殊含义作为标记的开头。致电htmlspecialchars<转换为HTML实体&lt;,以便在浏览器中正确显示。您可能还希望以$search[i]的值调用此值,否则您可能会在应用程序中留下cross-site scripting漏洞。

试试这个:

echo htmlspecialchars('<' . $search[$i] . '<' . $l);

来自文档:

  

某些字符在HTML中具有特殊意义,如果要保留其含义,则应由HTML实体表示。此函数返回一个字符串,其中包含一些转换;翻译是对日常网络编程最有用的。