了讓初學者更容易理解,本文寫的比較詳細,所以如果你已是技術大拿,請直接繞過,以免浪費你的寶貴時間,謝謝。
相信現(xiàn)在很多網(wǎng)站都有文章功能,有文章就基本上少不了要有個列表頁,網(wǎng)頁設計師們對文章列表頁的設計也是五花八門,各有各的創(chuàng)意,那我們就拿ThinkPHP旗下的極思維平臺的列表頁來說,極思維的目前的列表頁是這樣的:
大家可以看到,它的布局是塊形式展現(xiàn),每篇文章都是固定的布局,圖片,標題,簡介,如果說每篇文章在發(fā)布的時候都要單獨的寫個簡介,單獨上傳個封面圖,對編輯者來說就有些麻煩了,那我們就可以通過程序讓它自動去抓取封面和簡介,自動抓取縮略圖我在之前的文章有講過,大家可以去找下我之前的《ThinkPHP之自動獲取文章內容中的第一張圖片做為縮略圖》這篇文章,今天我們主要講如何自動抓取文章的部分內容作為文章的簡介。
我們先來分析一下功能的實現(xiàn)原理,所謂簡介,就是簡單的說明一下這篇文章的主要內容,不涉及到排版,所以我們只需要純文字,那么問題來了,之前我們在抓取縮略圖的文章中我們也有說到,文章內容是由編輯器進行排版的,既然有排版樣式,就必定要有HTML樣式,只要保留文字就得把所有的HTML標簽都去掉,那怎么去掉呢?
不用急,PHP有個專門去掉HTML的函數(shù),這個函數(shù)就是 strip_tags ,我們先來看一下這個函數(shù)是什么樣的:
在以上代碼中可以看到,內容中有個 <b> 標簽,<b> 標簽的作用就是字體加粗,我們運行一下實例看下:
可以很明顯的看到使用了 strip_tags 函數(shù)和沒使用 strip_tags 函數(shù)的區(qū)別,那是不是直接在ThinkPHP中用這個函數(shù)就夠了呢,寫過文章的人都知道,文章會涉及到換行、空格等格式,strip_tags 函數(shù)只能去掉HTML標簽,并不能去掉換行、空格等格式,那么怎么樣才能去掉換行和空格呢,別擔心,強大的PHP也有函數(shù)來處理這些東西的,PHP中有個正則替換函數(shù)叫做 ereg_replace ,這個函數(shù)可以把指定的字符換成我們想要的字符,那么我們的邏輯代碼就可以這樣寫:
從上面的邏輯代碼中,我們可以看到替換換行符中處理了三次替換,這是為什么呢,因為現(xiàn)在服務器系統(tǒng)有很多種,最常用的就有windows、linux兩種系統(tǒng),這兩種系統(tǒng)的換行符是不同的,所以為了兼容不同的服務器,我們就多替換幾次,其中 \r\n 是替換 linux 和 unix 系統(tǒng)的換行符,\n 是替換 windows 系統(tǒng)的換行符,\r 是替換蘋果系統(tǒng)的換行符的。
處理好了HTML之后,接下來我們就要截取內容了,因為文章字數(shù)有多有少,既然是簡介,那我們肯定就只要截取一小段文字了,比如只要50個字或者100個字這樣,因為編程基本都是用英文編寫的,對中文的識別較差,所以在編程計算長度時,一個中文漢字是算兩個字符的,所以如果我們要截取50個中文的話,截取長度就是乘以二,那就是100了,其實這都不算什么問題,但是在實際過程中,按這樣的方式去截取的話,遇到文章包含中英文的時候就可能會出現(xiàn)亂碼的情況,為了避免出現(xiàn)亂碼,我們可以用一個非PHP核心函數(shù) mb_strlen 來解決,為什么說 mb_strlen 是非PHP核心函數(shù)呢,因為在使用 mb_strlen 函數(shù)前需要確保在 php.ini 中有加載 php_mbstring.dll,要不然就會出現(xiàn) 未定義函數(shù) 的問題,那我們就來把上面的代碼改進一下,加上截取字數(shù)的功能,得到代碼如下:
然后,我們以ThinkPHP3.2為例,把上面的自定義函數(shù)方法添加到ThinkPHP框架中核心公共函數(shù)目錄(Common)里的 functions.php 文件的最后面即可。
調用方法為:{$vo.content|cutstr_html=###,100}
上面調用方法中的 ### 是表示文章內容,100為要截取的字數(shù)長度。
謝謝你的閱讀,如果你有更好的方法或在應用過程中遇到問題可以在評論區(qū)提問或者直接私信我,我會定期回復,碼農劉小橋與你一起學習,共同進步。
也不用羨慕隔壁laravel laraveldebugbar、ignition、whoops 異常報錯時打開跳轉編輯器功能。如今ThinkPHP也可以了(6和8)。只需要你安裝相應擴展,配置一番即可。Vscode最簡單。
composer require yangweijie/think-exception
.env 里 app_debug=true
將 app.show_error_msg 設為 true
// 顯示錯誤信息
'show_error_msg' => true,
// 當前編輯器
'editor' => 'vscode',
最容易的,只需要安裝時 選擇下圖的“將code注冊為受支持的文件類型的編輯器”就行
需要安裝GitHub - thecotne/subl-protocol: sublime text protocol插件
參考laravel-debugbar 中正確使用 ide phpstorm打開項目文件的方式 | Laravel China 社區(qū) 文章放置js 和 添加注冊表即可
歡迎大家使用,反饋
對不同的WEB服務器,ThinkPHP V5需要的偽靜態(tài)內容是不一樣的,
而且在Apache服務器上,模塊化運行與采用FCGI運行方式的偽靜態(tài)也有差別
-----------apache、nginx、iis、安裝TP5之Apache篇開始-----------
特別一提的地方(重要)
在Apache服務器上,采用模塊化運行與采用FCGI運行方式的偽靜態(tài)也是有差別的、
所以有的人在安裝ThinkPHP V5的時候就會出現(xiàn)No input file specified.的錯誤提示
下面這個偽靜態(tài)是Apache采用模塊運行方式時需要配置的偽靜態(tài)內容,詳細的運行方式可查看我以往的博客內容
(如果您當前的Apache采用Fcgi模式運行PHP,那么這個偽靜態(tài)就會出現(xiàn)“No input file specified.”的錯誤提示)
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
上面的偽靜態(tài)為什么有的人能正常使用,而有的人使用確出現(xiàn)“No input file specified.”的提示呢?
那是因為Apache只有采用fastcgi模式的時候,才出現(xiàn)不能識別PATH_INFO的情況,所以在windows下很多人安裝ThinkPHP V5的時候都沒出現(xiàn)這個問題,因為大部分windows用戶安裝的Apache是采用模塊化運行方式的,而在linux上以及在windows系統(tǒng)下采用FCGI運行模式的都出現(xiàn)了“No input file specified.”提示。
如果你采用FCGI運行方式的時候出現(xiàn)此類提示,只需要把
RewriteRule ^(.*)$ index.php/ [QSA,PT,L]
改寫成
RewriteRule ^(.*)$ index.php [E=PATH_INFO:,QSA,PT,L] 即可,改寫后的偽靜態(tài)如下(注意E=PATH_INFO:)
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [E=PATH_INFO:$1,QSA,PT,L] </IfModule>
友情提示:PHPWAMP支持多模式,主界面默認站點是模塊化運行方式,站點管理是Fcgi模式,
所以主界面的默認站點可以直接使用ThinkPHP V5默認的偽靜態(tài),而站點管理需要使用修改后的偽靜態(tài)。
選擇相關設置切換php版本后選擇這里啟動Apache2.4
選擇這里默認的三個版本都可以啟動Apache2.4,這里選擇的版本僅僅是默認站點的版本
默認站點采用的常見的模塊運行方式,所以可以直接使用上面第一個未經(jīng)改動的偽靜態(tài)文件。
啟動后在站點管理界面添加站點,復制上面修改過的偽靜態(tài)進去就可以了,因為站點管理是FCGI模式
在添加站點的時候,網(wǎng)站根目錄應該選擇public文件夾,這樣就可以打開默認的ThinkPHP V5頁面了。
如果你在上個步驟使用默認的偽靜態(tài),由于站點管理是FCGI模式,那么就會出現(xiàn)下面的No input file specified.”提示
所以我們必須改用修改后的偽靜態(tài),啟用修改后的偽靜態(tài)就可以正常打開http://localhost:8033/index/index/index這個頁面了
-----------apache、nginx、iis、安裝TP5之nginx篇開始-----------
在Nginx服務器上安裝ThinkPHP V5的偽靜態(tài)如下所示
if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; break; }
具體流程如下圖,點擊菜單相關設置,然后我們先啟用Nginx服務器
打開nginx站點管理添加站點,網(wǎng)站目錄選擇public文件夾,就不用在url后面添加public訪問了
添加站點后,我們會發(fā)現(xiàn)添加的站點根目錄自動生成了屬于Nginx服務器的偽靜態(tài)文件“nginx.htaccess”
打開此偽靜態(tài)文件,里面默認集成了常見網(wǎng)站的偽靜態(tài),找到屬于TP5的偽靜態(tài),去掉前面#號后即可(重啟Nginx)
你也可以把里面默認的偽靜態(tài)全部刪掉,直接復制前面我提供的Nginx下TP5的偽靜態(tài)也是可行的(設置須重啟Nginx)
如果你的Nginx偽靜態(tài)設置錯誤,通常訪問如下路徑“http://localhost:8088/index/index/index/”將會出現(xiàn)404錯誤
如果正確的設置了Nginx下TP5程序的偽靜態(tài),打開該頁面才能正常顯示
-----------apache、nginx、iis、安裝TP5之iis篇開始-----------
在iis服務器上安裝ThinkPHP V5的偽靜態(tài)還需要額外的這幾個步驟
1、服務器需要安裝:URL Rewrite 下載地址可在微軟官網(wǎng)自行搜索
2、在IIS的高版本下面可以配置web.Config,在中間添加rewrite節(jié)點:
加在 <system.webServer>里面就可以了
<rewrite> <rules> <rule name="OrgPage" stopProcessing="true"> <match url="^(.*)$" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTP_HOST}" pattern="^(.*)$" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php/{R:1}" /> </rule> </rules> </rewrite>
具體步驟,打開PHPWAMP的相關設置,點擊IIS站點管理
此IIS站點管理可以操作系統(tǒng)內置的IIS服務器,快速添加PHP站點,可以多個PHP版本同時運行
添加后的站點可以在phpwamp的iis站點管理進行修改,也可以在系統(tǒng)的iis管理器里面修改,通用。
添加一個iis站點,php版本任意選,而且還可以自定義php版本,支持32位/64位PHP任選。
添加站點后,就會發(fā)現(xiàn)添加的站點根目錄自動生成了屬于IIS服務器的偽靜態(tài)文件“web.config”
添加網(wǎng)站后重啟iis,然后訪問路徑http://localhost:8088/index/index/index會出現(xiàn)404,因為還沒設置偽靜態(tài)web.config文件
在設置偽靜態(tài)web.config文件之前,我們必須先安裝偽靜態(tài)模塊,在前面提供的urlrewrite2.exe文件下載地址下載后,
進行urlrewrite2.exe的安裝,安裝完成后需要重啟動電腦,然后導入IIS服務器下TP5的偽靜態(tài)即可,下面繼續(xù)詳細步驟
安裝偽靜態(tài)可能出現(xiàn)的原因與解決方案
如果安裝偽靜態(tài)時提示出現(xiàn)了已安裝,你可以搜索以下文件,刪掉“rewrite.dll”文件即可,該文件一般在C:\Windows\System32\inetsrv目錄下
友情提示:安裝偽靜態(tài)后最好是重啟一下電腦,如果安裝偽靜態(tài)過程中遇到任何問題,可按照此步驟重裝偽靜態(tài)模塊
安裝完偽靜態(tài)后,我們點擊此處打開系統(tǒng)的iis管理器
打開后就會發(fā)現(xiàn)如下圖標,多了“URL重寫”這個圖標,說明安裝好了偽靜態(tài)模塊。
安裝偽靜態(tài)模塊成功之后,就可以在網(wǎng)站根目錄的web.config文件里面添加上面的偽靜態(tài)規(guī)則了,
早在前面我們添加站點的時候已經(jīng)自動在站點根目錄下面生成web.config文件了,如下圖紅框所示。
我們可以直接打開它,添加上面的偽靜態(tài)內容即可,修改文件web.Config,
在中間添加rewrite節(jié)點,加在 <system.webServer>里面就可以了,如下圖添加
保存后刷新http://localhost:8088/index/index/index,我們就發(fā)現(xiàn)能正常打開,不再出現(xiàn)404提示了。
至此,Nginx、Apache、IIS三大主流WEB服務器設置偽靜態(tài)的詳細過程講解完畢,
如果按照操作出現(xiàn)錯誤,請多次熟讀本文中的內容,不要只看圖片,文字敘述才是重點。
*請認真填寫需求信息,我們會在24小時內與您取得聯(lián)系。