【问题标题】:php href file reference confusion in header section标头部分中的 php href 文件引用混淆
【发布时间】:2014-04-23 05:15:36
【问题描述】:

我正在做一些非常简单的事情,并且想了解为什么某些文件路径引用有效而其他文件路径引用无效。我的测试代码如下:

<?php
$menu1 = 'c:/xampp/htdocs/data/sc01/includes/menu.php';
$menu2 = 'http://localhost/data/sc01/includes/menu.php';
$test1 = 'http://localhost/data/sc01/css/style.css';
$test2 = 'c:/xampp/htdocs/data/sc01/css/style.css';
$test3 = 'css/style.css';
echo $test1; echo "<br>";  
echo $test2; echo "<br>"; 
echo $test3; echo "<br>"; 
?>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="<?php echo $test2; ?>">
    <link rel="stylesheet" href="css/font-awesome.min.css">
    <title>Index</title>
</head>
<body>  
<div id="container">
    <?php include "$menu1"; ?>
    <h1>Welcome to our site!</h1>
    <p>This is a test coment</p>
</div>
</body>

<div class="footer-container">
    <?php include "c:/xampp/htdocs/data/sc01/includes/footer.php"; ?>
</div>
</html>

我的问题:

  1. 在标题部分引用 css 文件:$test1 有效,$test2 无效,$test3 有效。在检查这些的 echo 语句中,所有路径似乎都正确验证。为什么是这样? - 我会认为所有这些都应该有效?
  2. 在访问导航菜单的容器部分,$menu1 有效,$menu2 无效 - 给出 PHP 错误。为什么是这样? - 我会认为所有这些都应该有效?
  3. 在包含菜单代码中,?php include "$menu1"; ?,双引号有效。但是单引号 '$menu1' 不起作用,但我认为单引号或双引号应该产生相同的结果。这是为什么呢?

提前致谢!

【问题讨论】:

  • 不要使用绝对路径。

标签: php href filepath


【解决方案1】:

c: 开头的字符串都不是有效的 URL,因此您不能在 HTML 中的 hrefsrc 属性中使用它们。您可以在 PHP include 行中使用它们,因为它们是由服务器处理的,并且它允许参数是本地文件名。

<?php include '$menu1' ?>

不起作用,因为 PHP 只在双引号字符串内展开变量,而不是在单引号字符串内展开。就像两者之间的区别:

echo "$menu1";

echo '$menu1';

第一个将回显变量的值,第二个将逐字回显$menu1

【讨论】:

    【解决方案2】:

    包括通过http:// 与通过文件系统路径是两个明显不同的东西——第一个只会为您提供脚本的输出¹,而第二个包括代码 文件,然后在主脚本范围内运行它。

    在包含菜单代码&lt;?php include "$menu1"; ?&gt; 中,双引号有效。但是单引号 '$menu1' 不起作用,但我认为单引号或双引号应该产生相同的结果。这是为什么呢?

    因为您“思考”而不是阅读语法的基础知识。所以现在就去解决这个问题:http://www.php.net/manual/en/language.types.string.php


    ¹ 当然,假设通过 HTTP 请求文件意味着它首先由 Web 服务器通过 PHP 解释器传递,但通常是这种情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2011-09-07
      • 1970-01-01
      • 2018-06-06
      • 2015-01-04
      • 1970-01-01
      • 2016-01-11
      相关资源
      最近更新 更多