我正在做一些非常简单的事情,并希望了解为什么某些文件路径引用有效而其他文件路径引用无效。我的测试代码如下:
<?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>
我的问题:
提前致谢!
答案 0 :(得分:0)
以c:
开头的所有字符串都不是有效的网址,因此您无法在HTML中的href
或src
属性中使用它们。您可以在PHP include
行中使用它们,因为它们由服务器处理,并且它允许参数为本地文件名。
<?php include '$menu1' ?>
不起作用,因为PHP只扩展双引号字符串中的变量,而不是单引号字符串。这就像是:
之间的区别echo "$menu1";
和
echo '$menu1';
第一个将回显变量的值,第二个将逐字回显$menu1
。
答案 1 :(得分:0)
包括via http://
vs via文件系统路径是两个截然不同的东西 - 第一个只能获取脚本¹的输出,而第二个包含该文件的代码,然后在主脚本的范围内运行它。
在包含菜单代码
<?php include "$menu1"; ?>
中,双引号有效。但单引号'$ menu1'不起作用,但我认为单引号或双引号应产生相同的结果。这是为什么?
因为你“思考”而不是阅读语法的基础知识。所以现在就解决这个问题:http://www.php.net/manual/en/language.types.string.php
¹当然,假设通过HTTP请求文件意味着它首先由Web服务器通过PHP解释器,但通常就是这种情况。