php摘要
㈠ php中使用substr截取字元串出現中文亂碼問題該怎麼辦
在PHP程序開發中,經常會執行字元串的截取操作,比如輸出信息列表時,標題不宜過長,列印文章摘要時,也要執行一系列的字元串截取操作。遇到這些需求時,我們經常會想到使用substr()方法來實現,substr()對全英文字元串的截取是比較適合的。
但字元串只要出現中文字元,就有可能導致PHP
substr中文亂碼,因為中文UTF-8編碼,每個漢字佔3位元組,而GB2312佔2位元組,英文佔1位元組,截取位數不準確,substr()硬生生地將
一個中文字元「鋸」成兩半,造成斷開的字元會把其後的..拉過來一起做一個字,所以出現了PHP substr中文亂碼。
substr --- 取得部份字元串
語法 : string substr (string string, int start [, int length])
說明 :
substr( )傳回 string的一部份字元串,由參數 start和 length指定。
如果 start是正數,傳回的字元串將會從 string的第 start個字元開始。
Example :
<?php
$rest = substr ("abcdef", 1); // returns "bcdef"
$rest = substr ("abcdef", 1, 3); // returns "bcd"
?>
如果 start是負數,傳回的字元串將會從 string結尾的第 start個字開始。
Example :
<?php
$rest = substr ("abcdef", -1); // returns "f"
$rest = substr ("abcdef", -2); // returns "ef"
$rest = substr ("abcdef", -3, 1); // returns "d"
?>
如果有給予參數 length而且是正數時,傳回的字元串將會從 start傳回 length個字元。
如果有給予參數 length而且是負數時,傳回的字元串將會結束於 string結尾的第 length個字元。
Example :
<?php
$rest = substr ("abcdef", 1, -1); // returns "bcde"
?>
對於英文沒有問題,我們測試一個中文
<?php
$rest = substr ("中國人", 1, -1); // returns "fdsafsda" 就是亂碼了
?>
這種截取字元的結果,肯定不是我們想要的結果,這種出現PHP substr中文亂碼的情況,可能會導致程序無法正常運行。解決辦法主要有兩種:
一、使用mbstring擴展庫的mb_substr()截取就不會出現亂碼了。
可以用mb_substr()/mb_strcut()這個函數,mb_substr()/mb_strcut()的用法與substr()相似,
只是在mb_substr()/mb_strcut最後要加入多一個參數,以設定字元串的編碼,但是一般的伺服器都沒打開
php_mbstring.dll,需要在php.ini在把php_mbstring.dll打開。
<?php
echo mb_substr("php中文字元encode",0,4,"utf-8");
?>
如果未指定最後一個編碼參數,會是三個位元組為一個中文,這就是utf-8編碼的特點,若加上utf-8字元集說明,所以,是以一個字為單位來截取的。
使用的時候要注意php文件的編碼,和網頁顯示時的編碼。使用這個mb_substr方法要事先知道字元串的編碼,如果不知道編碼,就需要判斷,mbstring庫還提供了mb_check_encoding來檢驗字元串編碼,但還不完善。
PHP 自帶幾種字元串截取函數,其中常用到的就是 substr 和 mb_substr。前者在處理中文時,GBK 為 2 個長度單位,UTF 為 3 個長度單位,後者指定編碼後,一個中文即為 1 個長度單位。
substr 有時會截 1/3 個中文或半個中文,會顯示亂碼,相對來說 mb_substr 更適合我們使用。不過有時候 mb_substr
就顯得不那麼好用了。例如我要顯示一個小圖片的簡要信息,5 個中文正好,超過 5 個就截取前4再加上
」…」,這樣處理中文是沒問題了,可是處理英文或數字,這樣截取就太短了。
二、自己書寫截取函數,但效率不如用mbstring擴展庫來得高。下面是ecshop裡面的截取UTF-8編碼下字元串的函數。
function sub_str($str, $length = , $append = true)
{
$str = trim($str);
$strlength = strlen($str);
if ($length == || $length >= $strlength)
{
return $str; //截取長度等於或大於等於本字元串的長度,返回字元串本身
}
elseif ($length < ) //如果截取長度為負數
{
$length = $strlength + $length;//那麼截取長度就等於字元串長度減去截取長度
if ($length < )
{
$length = $strlength;//如果截取長度的絕對值大於字元串本身長度,則截取長度取字元串本身的長度
}
}
if (function_exists('mb_substr'))
{
$newstr = mb_substr($str, , $length, EC_CHARSET);
}
elseif (function_exists('iconv_substr'))
{
$newstr = iconv_substr($str, , $length, EC_CHARSET);
}
else
{
//$newstr = trim_right(substr($str, , $length));
$newstr = substr($str, , $length);
}
if ($append && $str != $newstr)
{
$newstr .= '...';
}
return $newstr;
}
㈡ 計算機畢業設計的源代碼
之前看到很多同學都在找論文的源代碼,我收藏了個網站,鍵盤論文網,上面有很多計算機專業的畢業設計,包含了對應的源代碼,你參考下吧
之前的一篇文章,關於php中文分詞技術的
摘要:
論文以站內中文全文搜索技術為背景,結合PHP(PHP:Hypertext Preprocessor)在實踐領域中對Web應用的性能和內存消耗的要求,提出了一種純PHP的以預索引字典為基礎的輕量高效的站內中文搜索引擎的解決力案。
主要內容:通過索引器在資料庫中保存生成的站內全文數據的帶權重索引和詞頻權重索引,檢索器基於此全文數據可以按多個類別的權重定義計算相關度得到搜索結果,表示器將結果高亮排序返回給搜索用戶完成搜索功能。
一個基於海量字典的中文分詞器作為中文數據處理的核心,將中英文及數字信息正確的切分並使得索引器可以進行按詞彙權重索引,實現豐富靈活的搜索或索引相關功能。
文章針對PHP站內中文搜索技術中最突出的三個方面進行研究。
1)輕量高效的PHP中文搜索框架設計,並統一考慮了檢索器和索引器的中文分詞問題,使得索引和搜索時處理同樣的分詞結果。這樣,在以較小的代價保證分詞器90%以上准確度的同時,對不準確的分詞結果具有很好的容忍度,保證了PHP應用的輕量性和可用性。對實踐中對性能非常敏感的Web應用的設計開發有一定的借鑒意義。
2)對站內數據的搜索結果提出了一種多權重因素的相關度計算的方法,該方法在傳統的關鍵字權重相關度的基礎上,結合HTML標記進行權重識別和統計,並通過文檔屬性和統計數據等類別增加了用戶可干涉的相關度權重因素,有力地保障了搜索結果的有效性,提升了用戶的站內搜索體驗。
3)為了提升中文分詞的質量,並同時解決PHP應用在處理海量詞典時的性能和內存消耗的問題,本文通過優化的分詞匹配演算法和創新性地在PHP中文分詞中使用B-Tree預索引詞典,以數量達53萬多個的UTF-8簡繁體中文詞彙在保證了較好的分詞結果的同時保持了中文搜索的輕量性和高效性。並在實踐中證明具有良好的可用性和通用性,具有較低的演算法時間復雜度。
創新點:
本文結合PHP技術以及搜索引擎、中文分詞等理論背景,對PHP領域內實現輕量高效的站內中文搜索提出了行之有效的分析解決方法。
隨著Web應用的持續發展和PHP普遍應用、中文信息處理需求的持續增長,本文所論述的方法對PHP相關范圍內的中文搜索或索引相關功能都有一定的指導意義。
同時,隨著先進的搜索引擎技術模型的演進,本文所做的分析研究為中文站內搜索的普適性應用進行了一項有意義的探索。
你參考下吧
㈢ 如何實現一鍵開啟屏幕常亮(讓你的屏幕時刻保持高亮狀態)
在使用電腦或手機的過程中,屏幕常亮是一項非常方便的功能。然而,很多人並不知道如何一鍵開啟屏幕常亮。本文將為你詳細介紹如何實現這個便捷功能。
如何實現一鍵開啟屏幕常亮?
摘要:在 PHP 開發中,系統設置的配置至關重要,它決定了伺服器的行為以及應用程序的運行環境。然而,對於初學者或經驗較少的開發者來說,配置系統設置可能是一項艱巨的任務。為了簡化系統設置的過程,php小編魚仔精心整理了本指南,詳細介紹了各種系統設置的配置方法。本指南將涵蓋以下內容:
系統設置:了解設備系統設置,找到屏幕常亮選項,並進行相應設置,以確保屏幕在特定時間內保持高亮狀態。
二、軟體輔助方法
屏幕常亮軟體:搜索並下載一款專門用於保持屏幕常亮的軟體,這些軟體通常提供一鍵開啟功能,方便快捷。自定義快捷方式:通過自定義設備的快捷方式,將屏幕常亮選項添加至快捷方式列表中,從而實現一鍵開啟屏幕常亮的功能。
三、硬體控制方法
物理按鈕:某些設備配備了專門的物理按鈕,可以直接開啟或關閉屏幕常亮功能,學會使用這些按鈕可以讓你更加便捷地控制屏幕的亮度。
四、定時開關方法
定時開關:將屏幕常亮功能與定時開關功能結合使用,可以在特定時間段內自動開啟或關閉屏幕常亮,減少手動操作的麻煩。
五、應用控制方法
應用程序:一些應用程序提供了特殊的屏幕常亮功能,例如看小說時,可以通過特定應用設置屏幕保持高亮狀態。外部設備:通過連接外部設備,如滑鼠或鍵盤,可以設置觸發屏幕常亮的動作,使屏幕保持高亮。
六、優化設置方法
設備設置:通過調整設備的省電模式,降低自動休眠時間,可以延長屏幕常亮的時間。更新:定期檢查設備的軟體更新,以確保屏幕常亮功能的穩定和最新版本的使用體驗。節省電量:使用省電功能,如降低屏幕亮度、關閉背光等方式,讓屏幕常亮不會過度消耗電量。硬體要求:一些設備可能需要特定的硬體支持才能實現一鍵開啟屏幕常亮功能,確保你的設備符合要求。多設備同步:如果你使用多個設備,可以將屏幕常亮設置同步到所有設備上,方便快捷地管理屏幕亮度。警示提醒:通過設置警示提醒,及時知道屏幕常亮的開關狀態,避免不必要的能源浪費。節能技巧:了解屏幕常亮的使用規則和注意事項,學習節能技巧,合理使用屏幕常亮功能。屏幕保護:在開啟屏幕常亮的同時,合理設置屏幕保護功能,避免長時間使用屏幕常亮造成屏幕損害。