[英]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.