当我在字符串之前添加'小于< '时,会发生这种情况,因为前面的字符串已经消失了[当我 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;
在前面?
非常感谢!!
答案 0 :(得分:7)
那是因为<
打开了一个html元素。这将导致文本的一部分不可见,因为FF认为它是HTML标记。通过输出<
html实体来逃避它,或使用htmlspecialchars
函数为您转义输出。
答案 1 :(得分:4)
默认情况下,PHP将内容提供为text/html
,并在HTML <
中打开标记。因此,您的内容将被解释为无效标记,并且不会显示。你应该使用<
来逃避它。还有其他保留字符需要编码。您可以使用htmlspecialchars
一次完成所有操作。
或者,您可以将内容作为text/plain
投放,不需要任何转义。 (在缺点方面,显然你不能在那里使用HTML。)
答案 2 :(得分:3)
字符<
在HTML中具有特殊含义作为标记的开头。致电htmlspecialchars
将<
转换为HTML实体<
,以便在浏览器中正确显示。您可能还希望以$search[i]
的值调用此值,否则您可能会在应用程序中留下cross-site scripting漏洞。
试试这个:
echo htmlspecialchars('<' . $search[$i] . '<' . $l);
来自文档:
某些字符在HTML中具有特殊意义,如果要保留其含义,则应由HTML实体表示。此函数返回一个字符串,其中包含一些转换;翻译是对日常网络编程最有用的。