php href文件头部分引用混乱


php href file reference confusion in header section

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

<?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包含"$menu1"?,双引号有效。但是单引号"$menu1"不起作用,但我认为单引号或双引号应该会产生相同的结果。为什么会这样

提前感谢!

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

<?php include '$menu1' ?>

不起作用,因为PHP只在双引号字符串中扩展变量,而不是在单引号字符串中。这就像之间的区别

echo "$menu1";

echo '$menu1';

第一个将回显变量的值,第二个将从字面上回显$menu1

通过http://包含和通过文件系统路径包含是两件截然不同的事情——第一件只会获得脚本的输出,而第二件包括文件的代码然后在主脚本的范围内运行它。

在包含菜单代码<?php include "$menu1"; ?>中,双引号起作用。但是单引号"$menu1"不起作用,但我认为单引号或双引号应该会产生相同的结果。为什么会这样?

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


D.3当然,假设通过HTTP请求文件意味着它首先由web服务器通过PHP解释器,但通常是这样。