繁体   English   中英

标题部分中的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 include "$menu1"; ?,双引号工作。 但是单引号 '$menu1' 不起作用,但我认为单引号或双引号应该产生相同的结果。 为什么是这样?

提前致谢!

c:开头的字符串都不是有效的 URL,因此您不能在 HTML 的hrefsrc属性中使用它们。 您可以在 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM