【问题标题】:How to write PHP variable as HTML attribute value?如何将 PHP 变量写为 HTML 属性值?
【发布时间】:2019-04-13 08:40:50
【问题描述】:

我对如何在 HTML 属性中写入 PHP 变量感到困惑。 如果是 HTML 表单,我们将其写为

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">

这里我们在 action 属性中回显 PHP 变量 $_SERVER['PHP_SELF']。

但在我的情况下,当我尝试在 img 元素 src 属性中获取服务器名称时,我收到以下错误

<img src="<?php echo $_SERVER['SERVER_NAME'] ?>/test/image/1.jpg">

加载资源失败:服务器响应状态为 404 (未找到)

仅当我回显 $_SERVER['SERVER_NAME'] 时才会收到此错误。当我删除回声并将其写为

<img src="<?php $_SERVER['SERVER_NAME'] ?>/test/image/1.jpg">

然后服务器找到图像。

所以我的问题是为什么 echo 在第一种情况下很好,但在后期情况下却不行?

【问题讨论】:

  • 在第二种情况下,&lt;?php $_SERVER['SERVER_NAME'] ?&gt; 什么都不做。
  • 查看生成的 HTML - URL 是否有效?不?检查 $_SERVER 数组以获得更好的选择...

标签: php html


【解决方案1】:

如果将服务器名称放在 URL 中,则需要在其前面加上 // 前缀。否则,服务器名称将被视为目录,而不是主机名。

<img src="//<?php echo $_SERVER['SERVER_NAME'] ?>/test/image/1.jpg">

但首先应该没有必要将服务器名称放在那里。默认情况下,会在与其所在页面相同的服务器上查找 URL。因此您可以编写:

<img src="/test/image/1.jpg">

【讨论】:

  • 如果您在 URL 中的路径以 / 开头,则浏览器将在绝对路径中查找,开头没有 / 的路径被视为相对于您当前页面.例如,如果您有一个名为 http://example.com/test 的 URL,/image/1.jpg 将被解释为 http://example.com/image/1.jpg。相比之下,image/1.jpg 将是 http://example.com/test/image/1.jpg
  • @Johannes — 没有人建议使用前面没有 / 的路径。
  • 这只是一个额外的解释,在尝试这个时不会遇到任何错误。我总是尝试在我的 cmets 和答案中提供更多背景信息,因为当其他人这样做时,过去为我节省了很多调试时间。 ;-)
【解决方案2】:
<img src="<?php echo $_SERVER['SERVER_NAME']; ?>/test/image/1.jpg">

可能错过了 -> ;

【讨论】:

  • 它在 PHP 块的末尾是可选的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
相关资源
最近更新 更多