[英]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>
我的问题:
提前致谢!
以c:
开头的字符串都不是有效的 URL,因此您不能在 HTML 的href
或src
属性中使用它们。 您可以在 PHP include
行中使用它们,因为它们由服务器处理,并且允许参数为本地文件名。
<?php include '$menu1' ?>
不起作用,因为 PHP 只扩展双引号字符串内的变量,而不是单引号字符串内的变量。 这就像以下之间的区别:
echo "$menu1";
和
echo '$menu1';
第一个将回显变量的值,第二个将从字面上回显$menu1
。
包括通过http://
和通过文件系统路径是两个明显不同的事情——第一个只会让你得到脚本的输出¹,而第二个包含文件的代码,然后在主要的范围内运行它之后的脚本。
在包含菜单代码中,
<?php include "$menu1"; ?>
<?php include "$menu1"; ?>
,双引号工作。 但是单引号 '$menu1' 不起作用,但我认为单引号或双引号应该产生相同的结果。 为什么是这样?
因为你“思考”而不是阅读语法的基础知识。 所以现在去解决这个问题: http : //www.php.net/manual/en/language.types.string.php
¹ 当然,假设通过 HTTP 请求文件意味着它首先由 Web 服务器通过 PHP 解释器,但通常情况如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.