HTML,Auto中和php标签

时间:2014-03-01 13:59:34

标签: php html

我试着理解为什么html会自动执行以下操作:

这是一些代码示例:

<?
$obj = ['name' => 'someValue', 'age' => 55];

将导致:

<!--?
$obj = ['name' =--> 'someValue', 'age' => 55];

该文件为.htm ,因此我发现<?>已转换为打开和关闭html评论标记<!--和{{1 }}

我注意到主要问题在于-->,如果我删除?则没有问题,如果有人知道为什么要完成转义,是否有{{1}的原因并且?要转义?是否只有<?>才能激活此操作?如果有人可以提供帮助,我真的很失落,我会非常感激。

修改

  1. 我正在使用 chrome
  2. 问题发生在本地(file://)和域名。
  3. 我正在使用apache和.htm文件不通过php引擎解析。
  4. 我不想将文件解析为php文件。

1 个答案:

答案 0 :(得分:1)

在XML中,序列<?开始一个“处理指令”,带有名称,可选属性和结束?>。例如,<?xml-stylesheet href="my-style.css"?>将CSS样式表应用于XML文档。 PHP的标准开始标记(<?php)在技术上是一个有效的PI(虽然没有真正使用),但“短标记”<?不是。

虽然HTML在大多数情况下不是XML,但是有一些共同的功能,因此浏览器可能会在这种情况下解释您的<?。另一方面,他们可能只是将其视为HTML标记,因为以<开头的任何内容都应该是,但<?不是有效标记。请注意,注释已设置为在>的下一个出现时结束,因为这通常会结束标记。

源代码中的注释标记是浏览器对无效标记的重新解释 - 因为它在无效标记内,它不应该出现在输出中,因此将其视为注释相当于从渲染的表示中删除它。

如果您打算显示PHP文件的来源,则需要先对其进行HTML转义,以便<?成为&lt;?;这将导致它在屏幕上显示为<?,而不是被解释为(损坏的)HTML。