解決php中file(php問題)

本文目錄一覽:

對於PHP中file_get_contents 中文亂碼有什麼解決方案嗎?

解決代碼邏輯如下

$content = ”;

$text = file_get_contents($file);

//$encodType = mb_detect_encoding($text);

define(‘UTF32_BIG_ENDIAN_BOM’, chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));

define(‘UTF32_LITTLE_ENDIAN_BOM’, chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));

define(‘UTF16_BIG_ENDIAN_BOM’, chr(0xFE) . chr(0xFF));

define(‘UTF16_LITTLE_ENDIAN_BOM’, chr(0xFF) . chr(0xFE));

define(‘UTF8_BOM’, chr(0xEF) . chr(0xBB) . chr(0xBF));

$first2 = substr($text, 0, 2);

$first3 = substr($text, 0, 3);

$first4 = substr($text, 0, 3);

$encodType = “”;

if (UTF8_BOM == $first3) {

$encodType = ‘UTF-8 BOM’;

} else if (UTF32_BIG_ENDIAN_BOM == $first4) {

$encodType = ‘UTF-32BE’;

} else if (UTF32_LITTLE_ENDIAN_BOM == $first4) {

$encodType = ‘UTF-32LE’;

} else if (UTF16_BIG_ENDIAN_BOM == $first2) {

$encodType = ‘UTF-16BE’;

} else if (UTF16_LITTLE_ENDIAN_BOM == $first2) {

$encodType = ‘UTF-16LE’;

}

//下面的判斷主要還是判斷ANSI編碼的·

if (” == $encodType) {

//即默認創建的txt文本-ANSI編碼的

$content = iconv(“GBK”, “UTF-8”, $text);

} else if (‘UTF-8 BOM’ == $encodType) {

//本來就是UTF-8不用轉換

$content = $text;

} else {

//其他的格式都轉化為UTF-8就可以了

$content = iconv($encodType, “UTF-8”, $text);

} (BY三人行慕課)

PHP中有兩個讀文件函數,file()和file_get_contents(),這兩個函數有何差異?

PHP中file() 函數和file_get_contents() 函數的作用都是將整個文件讀入某個介質,其主要區別就在於這個介質的不同。file() 函數是將文件讀入一個數組中,而file_get_contents()是將文件讀入一個字符串中。

file() 函數是把整個文件讀入一個數組中,然後將文件作為一個數組返回。數組中的每個單元都是文件中相應的一行,包括換行符在內。如果失敗,則返回 false。

file_get_contents() 函數是把整個文件讀入一個字符串中。和 file() 一樣,不同的是file_get_contents() 把文件讀入一個字符串。file_get_contents() 函數是用於將文件的內容讀入到一個字符串中的首選方法。如果操作系統支持,還會使用內存映射技術來增強性能。

PHP file_get_contents 函數超時的幾種解決方法

這裡就簡單介紹兩種:

一、增加超時的時間限制

這裡需要注意:set_time_limit只是設置你的PHP程序的超時時間,而不是file_get_contents函數讀取URL的超時時間。

我一開始以為set_time_limit也能影響到file_get_contents,後來經測試,是無效的。真正的修改file_get_contents延時可以用resource

$context的timeout參數:

複製代碼

代碼如下:

$opts

=

array(

‘http’=array(

‘method’=”GET”,

‘timeout’=60,

)

);

$context

=

stream_context_create($opts);

$html

=file_get_contents(”,

false,

$context);

fpassthru($fp);

二、一次有延時的話那就多試幾次

有時候失敗是因為網絡等因素造成,沒有解決辦法,但是可以修改程序,失敗時重試幾次,仍然失敗就放棄,因為file_get_contents()如果失敗將返回

FALSE,所以可以下面這樣編寫代碼:

複製代碼

代碼如下:

$cnt=0;

while($cnt

3

($str=@file_get_contents(‘http…’))===FALSE)

$cnt++;

為什麼在服務器上php里執行file

1. 我們從未手動開啟過PHP的相關進程,它是隨着Apache的啟動而運行的;

2. PHP通過mod_php5.so模塊和Apache相連(具體說來是SAPI,即服務器應用程序編程接口);

3. PHP總共有三個模塊:內核、Zend引擎、以及擴展層;

4. PHP內核用來處理請求、文件流、錯誤處理等相關操作;

5. Zend引擎(ZE)用以將源文件轉換成機器語言,然後在虛擬機上運行它;

6. 擴展層是一組函數、類庫和流,PHP使用它們來執行一些特定的操作。比如,我們需要mysql擴展來連接MySQL數據庫;

7. 當ZE執行程序時可能會需要連接若干擴展,這時ZE將控制權交給擴展,等處理完特定任務後再返還;

8. 最後,ZE將程序運行結果返回給PHP內核,它再將結果傳送給SAPI層,最終輸出到瀏覽器上。

原創文章,作者:LLC8X,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/130175.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LLC8X的頭像LLC8X
上一篇 2024-10-03 23:27
下一篇 2024-10-03 23:27

相關推薦

  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智能等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示“文件中含有宏,保存將導致宏不可用”的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • Java Thread.start() 執行幾次的相關問題

    Java多線程編程作為Java開發中的重要內容,自然會有很多相關問題。在本篇文章中,我們將以Java Thread.start() 執行幾次為中心,為您介紹這方面的問題及其解決方案…

    編程 2025-04-29
  • Python爬蟲亂碼問題

    在網絡爬蟲中,經常會遇到中文亂碼問題。雖然Python自帶了編碼轉換功能,但有時候會出現一些比較奇怪的情況。本文章將從多個方面對Python爬蟲亂碼問題進行詳細的闡述,並給出對應的…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • NodeJS 建立TCP連接出現粘包問題

    在TCP/IP協議中,由於TCP是面向字節流的協議,發送方把需要傳輸的數據流按照MSS(Maximum Segment Size,最大報文段長度)來分割成若干個TCP分節,在接收端…

    編程 2025-04-29
  • 如何解決vuejs應用在nginx非根目錄下部署時訪問404的問題

    當我們使用Vue.js開發應用時,我們會發現將應用部署在nginx的非根目錄下時,訪問該應用時會出現404錯誤。這是因為Vue在刷新頁面或者直接訪問非根目錄的路由時,會認為服務器上…

    編程 2025-04-29
  • 如何解決egalaxtouch設備未找到的問題

    egalaxtouch設備未找到問題通常出現在Windows或Linux操作系統上。如果你遇到了這個問題,不要慌張,下面我們從多個方面進行詳細闡述解決方案。 一、檢查硬件連接 首先…

    編程 2025-04-29
  • Python折扣問題解決方案

    Python的折扣問題是在計算購物車價值時常見的問題。在計算時,需要將原價和折扣價相加以得出最終的價值。本文將從多個方面介紹Python的折扣問題,並提供相應的解決方案。 一、Py…

    編程 2025-04-28

發表回復

登錄後才能評論