代码之家  ›  专栏  ›  技术社区  ›  Wim

奇怪的PHP输出损坏

  •  4
  • Wim  · 技术社区  · 16 年前

    我的一个php站点上有一个非常奇怪的输出损坏。有时会显示一段HTML代码,而不是被解释的标记。看起来有些字符丢失了,把标签弄乱了。请参见下面的示例:第二行应该只是指向 C1 ,但由于某些原因,显示了部分目标URL。

    alt text http://trappist.elis.ugent.be/~wheirman/atuin/tmp/phpstrangeness.png

    问题是暂时的,刷新通常可以解决问题。这可能发生在页面的不同部分(尽管通常在同一位置)。似乎只有Safari受到了影响(但我怀疑火狐只是因为更宽容的解析而掩盖了这个问题)。它发生在我的开发服务器和活动服务器上,它们的设置略有不同(输出缓冲、分块传输),尽管发生这种情况的可能性似乎有所不同。

    有人见过这样的东西吗??

    编辑

    当我在本页的Safari中“查看源代码”时,我会得到以下HTML:

    <tr class="odd">
      <td>73</td>
      <td><a href="companies.php?view=1&amp;companyid=73&amp;return=%2Foffice%2Fcompanies.php">c1</a></td>
      <td></td>
      <td><img src='/images/dot_blue.png'  class="altTooltip" alt="inactive: no account"  /> </td>
    

    我看不出这有什么问题,所以当我向Safari请求源代码时,它可能已经重新加载了页面,或者我找不到足够的资源…

    3 回复  |  直到 16 年前
        1
  •  2
  •   Thomas    16 年前

    好吧,这是我在黑暗中拍摄的照片。

    中断出现在单词“office”中,在fi字符组合之后。我敢打赌 fi ligature 是——不知何故——制造麻烦。

    到底怎样?由于HTML代码不包含连字字符,这可能是Safari中的一个错误。尤其是因为它是随机发生的。你能试着重新命名那个文件,看看问题是否消失了吗?

    拥有有效的HTML也有助于避免这个问题,因为它使解析更加容易。

        2
  •  1
  •   J. Martin    16 年前

    当您选择一个HTML并查看源代码时,您得到的并不是100%的内容。例如,所有人都是 &amp; ,这可能意味着您选择了有问题的文本并查看了所选内容的源。

    如果仍然存在问题,请尝试在不选择任何内容的情况下查看整个源代码,然后使用ctrl+f查找代码中的位置,并尝试为我们提供一个更大的示例,不仅是有问题的行,而且是正确的行,并且是在更大的上下文中。

    例如,当使用表格时, <td> 可能会产生非常奇怪的后果,这不像是那种类型的问题,我只是说我们需要上下文来帮助。

    还有一个问题是,一些浏览器为了查看源代码,实际上需要重新提交页面并获得第二个副本。我觉得是代码输出了文本,所以看看你是否在使用

    <?= $someVar ?>
    

    确保不是这样:

    <a href=<?= isset($x) ?'"'. $someVar.'"': '"'.$someOlderVar.'">'?>> xxx </a>
    

    所以,不要选,请拿大一点的样品。我们当然需要一些输出错误HTML的代码…

        3
  •  1
  •   Wim    16 年前

    我最终发现了问题(使用Web检查器):Tinymce在看似随机的地方插入了标签(用于加载语言文件和扩展模块)。 里面 我自己的HTML。结果是,从我的截图中可以看到,像 <a href="foo<script src="tinymce/lang/en.js">bar.php">foobar</a> .

    因为我也在同一个页面上使用jquery,所以我猜想它最终是由jquery对dom的修改和Tinymce的添加同时发生造成的,这导致了某种竞争条件(由一个只在Safari中显示自己的bug引起)。

    我现在使用的是Tinymce的jQuery构建,从那时起一切都很好…

    感谢大家的帮助!

    推荐文章