我试着理解为什么html会自动执行以下操作:
这是一些代码示例:
<?
$obj = ['name' => 'someValue', 'age' => 55];
将导致:
<!--?
$obj = ['name' =--> 'someValue', 'age' => 55];
该文件为.htm ,因此我发现<?
和>
已转换为打开和关闭html评论标记<!--
和{{1 }}
我注意到主要问题在于-->
,如果我删除?
则没有问题,如果有人知道为什么要完成转义,是否有{{1}的原因并且?
要转义?是否只有<?
和>
才能激活此操作?如果有人可以提供帮助,我真的很失落,我会非常感激。
修改
答案 0 :(得分:1)
在XML中,序列<?
开始一个“处理指令”,带有名称,可选属性和结束?>
。例如,<?xml-stylesheet href="my-style.css"?>
将CSS样式表应用于XML文档。 PHP的标准开始标记(<?php
)在技术上是一个有效的PI(虽然没有真正使用),但“短标记”<?
不是。
虽然HTML在大多数情况下不是XML,但是有一些共同的功能,因此浏览器可能会在这种情况下解释您的<?
。另一方面,他们可能只是将其视为HTML标记,因为以<
开头的任何内容都应该是,但<?
不是有效标记。请注意,注释已设置为在>
的下一个出现时结束,因为这通常会结束标记。
源代码中的注释标记是浏览器对无效标记的重新解释 - 因为它在无效标记内,它不应该出现在输出中,因此将其视为注释相当于从渲染的表示中删除它。
如果您打算显示PHP文件的来源,则需要先对其进行HTML转义,以便<?
成为<?
;这将导致它在屏幕上显示为<?
,而不是被解释为(损坏的)HTML。