整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          PHP 你真的了解INCLUDE、REQUIRE嗎?

          PHP中有兩個引入文件的語言結構:include、require

          1、注意這兩個都是語言結構不是方法,與echo、print、isset()、empty()、unset()等類似都是語言結構不是函數!!!!!

          2、include與require都是引入外部文件到當前上下文環境,但是他們有一些區別:

          一、被包含文件先按參數給出的路徑尋找,如果沒有給出目錄(只有文件名)時則按照 include_path 指定的目錄尋找。如果在 include_path 下沒找到該文件則 include 最后才在調用腳本文件所在的目錄和當前工作目錄下尋找。如果最后仍未找到文件則 include 結構會發出一條警告;這一點和 require 不同,后者會發出一個致命錯誤。(在這點上include_once與require_once類似,但是他們在導入一個已導入的文件都會忽略,但是他們在引入文件時會判斷是否引入會降低性能)

          二、關于引入的文件:當一個文件被包含時,其中所包含的代碼繼承了 include、require 所在行的變量范圍。從該處開始,調用文件在該行處可用的任何變量在被調用的文件中也都可用。不過所有在包含文件中定義的函數和類都具有全局作用域。

          EG1:

          vars.php

          <?php

          $color = 'green';

          $fruit = 'apple';

          ?>

          test.php

          <?php

          echo "A $color $fruit"; // A

          include 'vars.php';

          echo "A $color $fruit"; // A green apple

          ?>

          如果 include 出現于調用文件中的一個函數里,則被調用的文件中所包含的所有代碼將表現得如同它們是在該函數內部定義的一樣。所以它將遵循該函數的變量范圍。此規則的一個例外是魔術常量,它們是在發生包含之前就已被解析器處理的。

          3、include返回值:

          處理返回值:在失敗時 include 返回 FALSE 并且發出警告。成功的包含則返回 1,除非在包含文件中另外給出了返回值。可以在被包括的文件中使用 return 語句來終止該文件中程序的執行并返回調用它的腳本。同樣也可以從被包含的文件中返回值。可以像普通函數一樣獲得 include 調用的返回值。不過這在包含遠程文件時卻不行,除非遠程文件的輸出具有合法的 PHP 開始和結束標記(如同任何本地文件一樣)。可以在標記內定義所需的變量,該變量在文件被包含的位置之后就可用了。因為 include 是一個特殊的語言結構,其參數不需要括號。在比較其返回值時要注意。

          EG2:

          <?php

          // won't work, evaluated as include(('vars.php') == TRUE), i.e. include('')

          if (include('vars.php') == TRUE) {

          echo 'OK';

          }

          // works

          if ((include 'vars.php') == TRUE) {

          echo 'OK';

          }

          講解:

          $bar 的值為 1 是因為 include 成功運行了。注意以上例子中的區別。第一個在被包含的文件中用了 return 而另一個沒有。如果文件不能被包含,則返回 FALSE 并發出一個 E_WARNING 警告。如果在包含文件中定義有函數,這些函數不管是在 return 之前還是之后定義的,都可以獨立在主文件中使用。如果文件被包含兩次,PHP 5 發出致命錯誤因為函數已經被定義,但是 PHP 4 不會對在 return 之后定義的函數報錯。推薦用 include_once 而不是檢查文件是否已包含并在包含文件中有條件返回.

          3、include引入文件的處理:(這點很重要)

          當一個文件被包含時,語法解析器在目標文件的開頭脫離 PHP 模式并進入 HTML 模式,到文件結尾處恢復。由于此原因,目標文件中需要作為 PHP 代碼執行的任何代碼都必須被包括在有效的 PHP 起始和結束標記之中。并且當執行完成之后直接加入到緩沖區,將被導入的文件中的變量加入到當前的作用域變量鏈上。

          EG3:

          //t1.php 文件內容

          1234<?php $name="PQS"; ?>5678<?php return 1; ?>9

          //t2.php文件內容

          <?php

          include "t1.php";

          echo $name;

          //開始執行t2.php

          會輸出:12345678PQS

          案例解析:

          首先當include "t1.php";文件時PHP解析器脫離PHP模式進入HTML模式開始解析,因為HTML模式是將內容直接加入到緩沖區,所以沒有標簽1234會被首先加入到緩沖區,然后在執行<?php $name="PQS"; ?>這里就會把$name這個變量加入到t2.php的include "t1.php"這句代碼的上線文變量作用域中。然后接著在回到HTM模式將5678加入到緩沖區,接下來遇到<?php return 1;?>就開始進入PHP模式進行執行代碼,因為include是接受return的,所以當這里return 1之后整個文件的加載就到此處結束了, 返回到t2的代碼執行域中了,這也是為什么最后沒有輸出9的原因。

          舉個例子證明PHP將文件輸入到緩沖區:

          //t3.php

          1234567

          //t4.php

          <?php

          $string = get_include_contents('t3.php');

          function get_include_contents($filename) {

          if (is_file($filename)) {

          ob_start();

          include $filename;

          $contents = ob_get_contents();

          ob_end_clean();

          return $contents;

          }

          return false;

          }

          echo $string;

          //執行t4.php

          1234567

          案例分析:

          函數get_include_contents($filename)

          在include之前開啟緩沖區,當include將t3.php文件引入后就使用ob_get_contents()方法獲取緩沖區數據賦值給$contents,然后使用ob_end_clean將緩沖區數據丟棄最后將$contents返回,最后輸出返回值就是t3.php在經過php運行的值。

          4、include支持引入URL:

          如果“URL include wrappers”在 PHP 中被激活,可以用 URL(通過 HTTP 或者其它支持的封裝協議——見支持的協議和封裝協議)而不是本地文件來指定要被包含的文件。如果目標服務器將目標文件作為 PHP 代碼解釋,則可以用適用于 HTTP GET 的 URL 請求字符串來向被包括的文件傳遞變量。嚴格的說這和包含一個文件并繼承父文件的變量空間并不是一回事;該腳本文件實際上已經在遠程服務器上運行了,而本地腳本則包括了其結果。

          <?php

          /* This example assumes that www.example.com is configured to parse .php *

          * files and not .txt files. Also, 'Works' here means that the variables *

          * $foo and $bar are available within the included file. */

          // Won't work; file.txt wasn't handled by www.example.com as PHP

          include 'http://www.example.com/file.txt?foo=1&bar=2';

          // Won't work; looks for a file named 'file.php?foo=1&bar=2' on the

          // local filesystem.

          include 'file.php?foo=1&bar=2';

          // Works.

          include 'http://www.example.com/file.php?foo=1&bar=2';

          $foo = 1;

          $bar = 2;

          include 'file.txt'; // Works.

          include 'file.php'; // Works.

          此案例是PHP官網案例,如果不懂之處請移步值PHP官網include章節!

          長文創作激勵計劃#

          模板不僅僅是靜態的HTML,在渲染的過程中經常包含著一部分變量。在Django中,通過一個類似字典的對象context,把所有模板中需要用到的變量從view傳遞到template。比如搜索結果列表和推薦列表顯示樣式和顯示信息都一樣,此種情況下,若模板根據不同變量顯示不同數據的方式進行頁面的渲染,則需要創建不同的模板進行顯示,會做很多重復性的工作,并造成代碼的冗余和結構的繁雜。在模板中使用變量的便利遠不止此,例如還可以根據傳遞變量類型或者值得不同顯示不同的樣式和信息。

          [!TIP]

          與其它語言不同的是,在Django中,view中的變量不會自動在template中可用,必須通過view準確傳遞到template中,這樣設計的目的是為了避免破壞模板的命名空間。

          和其它語言PHP、Vue中的用法一樣,Django的模板中的變量也是通過{{ }}進行表示,例如顯示變量name:{{ name }}。即使變量中包含一些特殊字符(如:<),也不需要擔心會影響顯示結果,因為Django的也會自動避免將其以HTML的形式進行顯示。

          [!NOTE]

          如果在模板中用到了沒有傳遞的變量,Django只會在相應位置不做任何顯示,而不會拋出異常。

          示例:

          1、以my_site項目為例,在Django應用myapp中創建templates文件夾,并在文件夾內創建welcome.html文件,其結構和內容如下:

          示例結構

          2、修改views.py文件,在其中添加welcome方法,其內容如下:

           from django.http import HttpResponse
           from django.shortcuts import render
           
           
           # Create your views here.
           def welcome(request):
               name="World"
               return render(request, "welcome.html" ,{"name":name})

          3、在myapp中的urls.py進行配置,其內容如下:

           from django.contrib import admin
           from django.urls import path
           from .views import welcome
           
           urlpatterns = [
               path('welcome/', welcome, name="welcome"),
           ]

          4、修改my_site項目的urls.py文件,引用myapp中的urls.py,其內容如下:

           from django.contrib import admin
           from django.urls import path, include
           
           urlpatterns = [
               path('admin/', admin.site.urls),
               path("", include("myapp.urls")),
           ]

          5、通過python manage.py runserver命令運行項目,其顯示如下:

          示例效果圖



          該文章作為學習筆記進行分享和記錄,如有錯誤或其它觀點,請多多指教!!!

          會創建一個 SEO 友好的 URL 只需要幾分鐘,但學會之后的好處,遠不只有一個。

          一個 SEO 友好的 URL 要易于理解和記憶,能提高用戶點擊或分享的機會,也能提高網站的可見性;當你在 URL 中添加了關鍵詞,還能幫助搜索引擎去了解該頁面的主題,有利于搜索排名。

          在《外貿獨立站域名挑選指南【2023】 | 慢慢來數字營銷》一文中,我們提到了 URL(uniform resource locator)與域名之間的關系,域名是URL的組成部分。在《外貿谷歌SEO入門:長文+思維導圖 | 慢慢來數字營銷》這篇文章里也簡單介紹了站內SEO的 On-Page SEO 包含很多要素,其中一個就是 URL 。

          來源:SERanking

          SEO 友好的 URL 能幫助網頁獲得一個良好的排名。什么樣算 SEO 友好的 URL 呢?其實很簡單,就是對用戶友好的,能提高用戶體驗的 URL 。

          URL 真能有這么大的幫助嗎?谷歌真的看重 URL 嗎?

          谷歌還是很在乎的,畢竟 SEO入門指南還專門給了 URL 一個板塊:

          既然這么重要,對用戶友好的,能提高用戶體驗的 URL 怎么創建呢?

          一、URL 的組成

          URL(uniform resource locator,統一資源定位符),是用于在互聯網上定位資源的唯一標識符,指向特定網站、網頁或文檔,就是我們俗稱的網頁地址。

          URL 由很多部分組成,一個簡單的示例 URL 拆解如圖:

          來源:ahrefs

          • Protocol :協議,如 https:// ,用于在客戶端和服務器之間傳輸數據的協議。
          • Subdomain :是由 URL 第一個 . 之前的任何單詞或短語組成。每個子域名通常被認為是一個單獨的網站,位于主域名(如 example.com )之外。
          • Domain :域名,這個就不多說了,詳情可看《外貿獨立站域名挑選指南【2023】 | 慢慢來數字營銷》
          • Top-LevelDomain(TLD) :頂級域名,就是咱們之前提到的域名后綴,如 .com
          • Subfolder :子文件夾,也被稱為子目錄(Subdirectory),是主域名(如 example.com )里的一個文件夾,相當于網站里的一個頁面,可用于按主題組織內容。
          • Slug :URL 最后的部分,用作頁面的唯一標識符,是包含該個網頁內容關鍵詞的地方,也是我們創建 SEO 友好的 URL 中最重要的部分。

          二、如何創建 SEO 友好的 URL ?

          雖然創建 SEO 友好的 URL 很有必要,但不建議大家去對現有的 URL 進行大幅度的改動,我們應該專注于接下來每一個新的博客、新的網頁的 URL。

          1、slug 部分的優化

          前文提到了 Slug 的重要性,作為 URL 里關鍵的一部分,也是包含該個網頁內容關鍵詞的地方。

          雖然近幾年也有一種說法:在 URL 里包含關鍵詞對排名的影響并不大。谷歌的 John Mueller 多次對此進行聲明:

          • 2016年,他分享到:“I believe that’s a very small ranking factor, so it’s not something I’d really try to force. And it’s not something where I’d say it’s even worth your effort to kind of restructure your site just so you can include keywords in the URL.”(我相信這只是一個很小的排名因素,所以我不會強求。我也不會說,為了在 URL 中包含關鍵詞而調整網站結構是值得的。)
          • 2017年,他在解答“關于 URL 中包含關鍵詞”的問題時,也再次強調:URL 包含關鍵詞對排名的影響只是一個很小的因素。

          • 2018 年,他繼續淡化 URL 中的關鍵詞作為排名因素的影響。

          那是不是在“URL 中包含關鍵詞”是一個沒必要去優化的因素呢?

          首先,谷歌官方肯定了做好 URL 的優化是有用的,雖然是一個很小的因素,但是我們要做好這個細節只需要花幾秒鐘,畢竟 SEO 就是由無數個優秀的小細節組成的。

          這點,谷歌的 Matt Cutts 在一個視頻中也有提到:

          在視頻中,Matt Cutts 也提到了一個清晰簡潔的 URL 對提高用戶體驗的重要性,視頻里著重強調了用戶體驗。

          其實,這也提醒我們,在優化 URL 的 Slug 部分時,簡潔有重點(關鍵詞)才是我們應該做的。

          優化 Slug 可以從這幾方面入手:

          • 提取關鍵詞。以我們寫一篇博客為例,在設置這篇博客的 URL 時,可以先從標題入手,一般標題都是對內容的高度概括。比如有一篇博客,標題是:10 Best Robot Mops of 2023, According to Cleaning Experts 那么 URL 的 Slug 可以設置為:/best-robot-mops
          • 選擇簡單的描述性詞語,不需要太長。以 10 Best Robot Mops of 2023, According to Cleaning Experts 為例,有朋友可能會說,為了更好被抓取,我把整個標題都放上去:/10-best-robot-mops-of-2023-according-to-cleaning-experts 首先,還是要強調一個用戶體驗,太長的 Slug 給用戶的觀感并不好,而且在谷歌搜索結果界面也不會顯示完整。

          Slug 不要太長,其實也等同于 URL 不要設置得太長,越短的 URL ,谷歌搜索引擎更容易索引到網頁的主題。Backlinko 做過一個實驗發現, URL 越長,在谷歌上的排名越下降

          來源:Backlinko

          • 字母要小寫。雖然現在大部分的服務器對 URL 中的大小寫都是一樣的處理方式,但并不是所有服務器都是這樣的,在有些服務器上,如果你的 URL 使用了大寫字母,可能會導致重定向或 404 錯誤。如果你的網站是使用 WordPress ,那就不用擔心,它會自動變成小寫。
          • 不要使用特殊的字符或表情符號。比如 () [] 。谷歌搜索中心提到了,不要使用非 ASCII(American Standard Code for Information Interchange ,美國信息交換標準代碼)標準的字符。

          • 用連字符 - 而不是下劃線 _ 。連字符是用于分隔 URL 中單詞的標準方式,也是谷歌官方推薦的方式:

          • 盡量避免使用數字。例如 10 Best Robot Mops ,當你在 URL 中加入數字,比如 10 ,一旦你要修改文章里面的數字,將 10 改為 7 ,那你也相應要調整 URL ,這當然也沒什么問題,但如果忘記修改 URL 上的數字,確實也會出現一個尷尬的場面。再者,URL 也沒必要因為這個原因而經常調整,頻繁修改,谷歌也需要再次重新適應的。
          • 不建議使用 SEO stop words 。SEO stop words 可以理解為那些能幫助我們將關鍵詞形成連貫句子的詞語,基本上都是一些代詞、冠詞、介詞和連詞。這些詞雖然對于我們形成一句連貫的句子很有幫助,但并不適合放在 URL 上,因為它們本身并沒有什么特別的意義,反而容易讓 URL 變得更長。常見的 SEO stop words 有:

          來源:hubspot

          • 保證可讀性。這一點還是我們一直強調的用戶體驗,可讀性高的 URL ,用戶理解起來更容易。

          2、選擇一個好的域名和頂級域名(后綴)

          域名、頂級域名(后綴)對于SEO的影響這一點我們在《外貿獨立站域名挑選指南【2023】 | 慢慢來數字營銷》一文中已經講解的很詳細,這里也不再贅述。

          谷歌表示:如果你的網站是多區域網站,建議考慮使用一種便于對網站進行地理位置定位的網址結構。

          3、HTTPS 協議

          HTTP 和 HTTPS 的區別咱們之前也聊到過,這點可以著重看看這篇文章:《5分鐘教你搞定HTTPS!(附免費SSL證書申請流程) | 慢慢來數字營銷》:

          • HTTP 是一種無加密的協議,在整個數據傳輸過程中是不提供數據的加密和安全性,網站容易被攻擊,數據也更容易被竊取。
          • HTTPS 是基于HTTP的安全協議,它使用了 SSL 或 TLS 協議來對數據進行加密和認證,提供了更高的安全性和隱私保護。

          來源:neilpatel 博客

          而作為 URL 的一部分,HTTPS 也是谷歌衡量排名的一個因素:

          4、子文件夾 > 子域名

          外貿獨立站不要使用子域名!

          外貿獨立站不要使用子域名!!

          外貿獨立站不要使用子域名!!!

          重要的事情應該多說幾遍。開頭咱們就提到,子域名是位于主域名之外的,被認為是一個單獨的網站;而子文件夾(相當于子目錄)其實就等于是網站里的一個頁面,是網站的一部分。舉個例子:

          子文件夾:mmldigi.com/blog/

          子域名:blog.mmldigi.com

          mmldigi.com/blog/是mmldigi.com 的一部分,但 blog.mmldigi.com 是獨立于 mmldigi.com 之外的。這就意味著谷歌在對 mmldigi.com 這個主域進行排名的時候,是不會考慮 blog.mmldigi.com 上面的內容的,但 mmldigi.com/blog/ 就不會有這樣的情況。

          谷歌官方有個對外說法:

          但現實的情況是,有很多從事 SEO 方面工作的人表示:呵呵!

          GetCredo 的創始人 Jonn Doherty 曾在社交媒體上表示:

          從事相關工作的 Craig Emerson 也專門做過研究,表示:

          我只需將子域名改為子目錄,就能從前列 100 名開外的某處(我知道我甚至沒有進入前 200 名)躍升至 SERP 排名第 57 位。與我的網站相關的其他一切都保持不變。

          當然,子文件夾(子目錄)也并非是絕對的選擇,比如一些大型的電子商務網站,也有因為技術原因而無法選擇子文件夾的情況。

          不過對于做外貿獨立站的朋友們來講,我們上千個獨立站項目的切身經歷得出來的結論就是:外貿獨立站不要使用子域名!

          我們曾經有個項目,客戶因為考慮到公司的目標市場情況,堅持選擇子域名,但結果就是,同等的資源傾斜上去,表現真的還不如 .www 。雖然后面網站問題順利解決了,但是這期間的損失還是很可惜的。

          還有一點是,選擇子文件夾的話,大家要注意子文件夾的關鍵詞不要跟 Slug 重復。重復的關鍵詞沒有必要且影響用戶觀感。

          5、避免使用日期

          這跟前面提到不要有數字很相似。避免使用日期有兩個原因:

          • 一個是選擇日期會讓整個 URL 更長
          • 一點是選擇日期對于更新不利,谷歌更喜歡新鮮、持續更新的內容。例如你在2022年更新了一篇文章:10 Best Robot Mops of 2022,但是你今年對這篇內容進行調整,甚至標題都進行了修改:10 Best Robot Mops of 2023 ,但如果你當初已經在 URL 中加入了日期且沒修改,很容易使人混亂,而且相對于舊的內容,新鮮、持續更新的內容更受谷歌青睞。再說了想全面對此進行修改,也會把整個網站的 URL 弄得更加混亂,改起來也很麻煩。

          6、不要輕易修改 URL

          這個其實很好解釋:

          URL 對于 SEO 很有幫助,但這并不代表我們只要搞定了 URL 就是做好了 SEO 的優化,SEO 優化涉及的內容很多,只有方方面面都做到細致,才能讓網站有更好的排名。


          主站蜘蛛池模板: 影院成人区精品一区二区婷婷丽春院影视 | 日本视频一区在线观看免费| 人妻精品无码一区二区三区| 日韩人妻无码一区二区三区久久99| 国产精品美女一区二区| 亚洲中文字幕在线无码一区二区| 熟女少妇精品一区二区| 免费在线视频一区| 国模极品一区二区三区| 亚洲AV噜噜一区二区三区 | 国产韩国精品一区二区三区久久| 国产日韩AV免费无码一区二区 | 国产主播一区二区三区在线观看 | 一区二区三区免费视频观看| 爱爱帝国亚洲一区二区三区| 综合一区自拍亚洲综合图区| 国产99视频精品一区| 在线视频一区二区三区| 日韩精品无码免费一区二区三区| 亚洲爆乳精品无码一区二区三区| 日本在线不卡一区| 亚欧色一区W666天堂| 精品无码人妻一区二区三区品| 精品性影院一区二区三区内射| 亚洲国产视频一区| 亚洲欧美日韩中文字幕在线一区| 一区二区三区高清| 国产一区在线观看免费| 精品国产天堂综合一区在线| 国产在线精品一区二区| 亚洲av午夜精品一区二区三区| 国产在线精品一区二区中文| 日韩一区二区在线观看视频| 国产精品一区视频| 日本一区午夜爱爱| 美女视频在线一区二区三区| 无码国产精品一区二区免费虚拟VR | 亚洲日韩一区精品射精| 国产SUV精品一区二区88L| 亚洲国产精品成人一区| 无码人妻久久一区二区三区免费 |