【问题标题】:PHP stripping "/" in closing tag of imgPHP在img的结束标记中剥离“/”
【发布时间】:2010-12-17 05:54:45
【问题描述】:

我在 while 循环中有这个:

echo '<a class="thumbnail" href="./images/bus-photos/'.$row['file'].'">';
echo '<img alt="'.$row['caption'].'"'. 'src="./images/bus-photos/thumbs/tmb'.$row['file'].'"/></a>'; 

它输出这个:

<img src="./images/bus-photos/thumbs/tmb134-trap-door.jpg" alt="Trap Door">

我似乎无法关闭图像标签...悲伤但真实。

【问题讨论】:

  • 如何在caption之前输出src?输出是指 HTML 源输出还是萤火虫输出?
  • 您查看源代码还是在 firebug/some-other-debugger 中检查它? firebug 使您的视图标准化,并且不是查看实际源代码的一种方式。

标签: php xhtml string-concatenation


【解决方案1】:

我的猜测是您正在使用 Firebug 或其他类型的 DOM 检查器来查看源代码。如果您实际上想查看您的 HTML 的样子,请不要这样做。使用“查看源代码”或浏览器的等效项。

也不要使用“查看生成的源代码”(Web Developer Add-On),因为它仍然从 DOM 构建源文档。见DisplayGroup decorator in Zend Framework


另一件事可能会有所帮助...如果您闯入和跳出服务器端上下文,通常更容易遵循混合标记和服务器端打印。例如

<img
    alt="<?php echo htmlspecialchars($row['caption']) ?>"
    src="./images/bus-photos/thumbs/tmb<?php echo htmlspecialchars($row['file']) ?>"
    />

【讨论】:

  • 是的,萤火虫。查看源代码显示: 所以alt值后面有一个尾随的“/”。
  • @Jamie 除了你多余的关闭/打开字符串和altsrc 之间没有空格,我看不到任何错误或斜线来自哪里。我已经编辑了我的答案以提供一些关于混合 PHP 和 HTML 的提示
  • 我在 alt 和 src 之间添加了一个空格,它修复了它。由于这是在一个循环中,看起来我不能离开 PHP,但是非常感谢您付出的额外努力。我将看看 htmlspecialchars() 函数。刚刚进入服务器端的东西。非常感谢您的帮助!
  • 您可以在任何地方关闭和重新打开 PHP 上下文。 PHP 控制语句的逻辑将被保留,并将“嵌入”非 PHP 部分。 IE。而if(false){ ?&gt; [html here] &lt;?php } 将不会输出带有大括号的 HTML。
  • @Jamie 查看PHP alternative syntax for control structures,它非常适合此类模板任务
【解决方案2】:

我猜你在 PHP 中使用了一些去除斜线的 HTML-cleanup-library - 在 HTML 中,你不需要关闭一些元素,例如图像和换行符。把它放在一边。

【讨论】:

  • 好点。文档类型是 xhtml,所以我需要关闭图像标签。我已将帖子的标签从 HTML 更改为 XHTML。感谢您指出这一点。
【解决方案3】:

你的问题的前提是错误的。该输出显然不是来自您认为的代码。

【讨论】:

  • 感谢您抽出宝贵时间添加任何价值。
  • @Jamie - echo 操纵它提供给打印的数据。因此,您发布的代码 cannot 导致了该输出。发布更多代码,以便我们了解发生了什么
  • 这完全取决于在演示之前如何解释输出;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多