簡體   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