」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用 PHP 有效率地檢查檔案中的字串?

如何使用 PHP 有效率地檢查檔案中的字串?

發佈於2024-11-08
瀏覽:143

How to Efficiently Check for a String in a File with PHP?

如何在PHP 中檢查文件是否包含字串

要確定文件中是否存在特定字串,讓我們探索一下解決方案和更有效的替代方案。

原始程式碼:

提供的程式碼嘗試檢查透過逐行讀取檔案來判斷檔案中是否存在由變數 $id 表示的字串。但是,while 迴圈中的條件 (strpos($buffer, $id) === false) 錯誤地檢查了字串是否存在,導致所需結果的邏輯否定。

改進的解決方案:

要修正這種情況,我們可以使用file_get_contents() 函數來簡化程式碼,該函數將整個檔案讀取為字串。然後,可以使用strpos() 函數檢查該字串中是否存在$id 字串:

if( strpos(file_get_contents("./uuids.txt"),$_GET['id']) !== false) {
    // do stuff
}

透過使用這種方法,我們可以避免逐行迭代文件,這可以節省時間和內存,特別是對於大文件。

替代方法(對於 Extremely大文件):

對於過大的文件,依賴文件操作來搜尋字串可能會帶來效能挑戰。作為替代方案,我們可以使用 grep 指令:

if( exec('grep '.escapeshellarg($_GET['id']).' ./uuids.txt')) {
    // do stuff
}

這種方法使用系統的 grep 實用程式來尋找檔案中的字串,減少了 PHP 腳本本身的工作量,同時提供了相當的效率。

版本聲明 本文轉載於:1729665916如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • 每個開發人員都應該了解的高階 JavaScript 概念
    每個開發人員都應該了解的高階 JavaScript 概念
    JavaScript 是许多开发人员日常使用的语言,但其生态系统中存在许多隐藏的瑰宝,即使是经验丰富的开发人员也可能不熟悉。本文探讨了一些鲜为人知的 JavaScript 概念,它们可以显着提高您的编程技能。我们将介绍 代理、符号、生成器等概念,通过示例演示每个概念并解决问题以说明其强大功能。 最...
    程式設計 發佈於2024-11-08
  • 直接用mysqli_函數取代mysql_函數會帶來挑戰嗎?
    直接用mysqli_函數取代mysql_函數會帶來挑戰嗎?
    盲目地用 mysqli_ 取代 mysql_ 函數會導致問題嗎? 將程式碼庫更新到 PHP 7 需要將已棄用的 mysql_ 函數替換為 mysqli_ 對應函數。然而,一個常見的誤解是您可以直接進行全面替換。 答案:不,事情沒那麼簡單雖然函數名稱可能會出現類似地,與 mysql_ 相比,mysql...
    程式設計 發佈於2024-11-08
  • 為什麼 `malloc()` 在 C++ 中會導致「無效轉換」錯誤?
    為什麼 `malloc()` 在 C++ 中會導致「無效轉換」錯誤?
    Malloc 分配問題:了解「無效轉換」錯誤提供的程式碼在嘗試使用malloc 分配記憶體時引入了一個常見問題( )。此錯誤源自於將 malloc() 的回傳值直接指派給 char 指標而沒有進行正確的轉換。 malloc() 函數在堆中保留一塊記憶體並傳回一個通用的 void 指標。但是,程式碼將...
    程式設計 發佈於2024-11-08
  • 如何在 Zend Framework 中確定客戶端的時區?
    如何在 Zend Framework 中確定客戶端的時區?
    客戶端時區確定確定客戶端時區對於時間敏感的應用程式至關重要。這個問題探討如何在 Zend Framework 中取得此資訊。 以秒偏移量形式檢索時區取得時區的首選方法是作為 UTC 的秒數。例如,俄羅斯莫斯科將返回 36060,而英國倫敦將返回 0。 建議的解決方案建議的解決方案涉及利用jQuery...
    程式設計 發佈於2024-11-08
  • 如何使用 React 建立通知功能
    如何使用 React 建立通知功能
    Hello everyone ?? In today's tutorial, we'll guide you through building a real-time notifications feature using SuperViz, a powerful platform for rea...
    程式設計 發佈於2024-11-08
  • 了解命令式程式設計和聲明式程式設計之間的區別
    了解命令式程式設計和聲明式程式設計之間的區別
    當我剛開始學習React時,我的老師說:「JavaScript是命令式編程,而React是聲明式編程。」然而,一開始這對我來說不太有意義。因此,我決定將其分解以更好地理解其中的差異。 將命令式和聲明式程式設計與披薩進行比較? 為了更容易理解,讓我們來比較一下這兩種烹飪方法。 ...
    程式設計 發佈於2024-11-08
  • 如何使用 JPA 和 Hibernate 以 UTC 格式儲存日期/時間和時間戳記?
    如何使用 JPA 和 Hibernate 以 UTC 格式儲存日期/時間和時間戳記?
    使用JPA 和Hibernate 以UTC 格式儲存日期/時間和時間戳在Java Persistence API (JPA) 和Hibernate 中,管理日期/時間不同時區的時間戳值可能是一個挑戰。為了確保 UTC(協調世界時)時間的一致儲存和檢索,正確配置框架至關重要。 考慮提供的附註解的 JP...
    程式設計 發佈於2024-11-08
  • java.lang.RuntimeException 和 java.lang.Exception 之間的主要區別是什麼?
    java.lang.RuntimeException 和 java.lang.Exception 之間的主要區別是什麼?
    揭示java.lang.RuntimeException 和java.lang.Exception 的獨特本質在Java 異常領域內,兩個經常遇到的異常類別出現:java.lang.RuntimeException 和java.lang.Exception。為了有效地理解異常處理的複雜性,剖析它們之...
    程式設計 發佈於2024-11-08
  • 為什麼嵌入框陰影在透明背景的圖片上消失?
    為什麼嵌入框陰影在透明背景的圖片上消失?
    了解圖像上的插入框陰影問題在網頁設計中,使用插入框陰影在元素內創建深度和尺寸是一種常見技術。然而,在處理包含圖像的容器時,事情並不總是那麼簡單。當嵌入框陰影似乎在嵌入影像上消失時,就會出現問題。 隱形陰影的情況考慮原始問題中提供的範例:body { background-color: #0000...
    程式設計 發佈於2024-11-08
  • 如何在 ReactJS 中維護懸停狀態:解決事件註冊問題
    如何在 ReactJS 中維護懸停狀態:解決事件註冊問題
    在ReactJS 中維護懸停狀態:解決事件註冊問題使用內聯樣式時,您會遇到ReactJS 中懸停和活動事件的問題,因為onMouseEnter 和onMouseLeave 方法被證明是不可靠的。 要解決此問題,請考慮使用下列事件處理程序之一:onMouseDownonMouseEnter onMou...
    程式設計 發佈於2024-11-08
  • 如何在 JavaScript 中準確檢查 Null 值和空字串?
    如何在 JavaScript 中準確檢查 Null 值和空字串?
    檢查 JavaScript 中的 Null 值在 JavaScript 中,確定值是否為 null 有時會令人困惑。為了提供更深入的理解,本文將深入研究在 JavaScript 情境中偵測空值的細節。 檢查空值提供的程式碼片段旨在檢查跨多個變數的null 值:if (pass == null || ...
    程式設計 發佈於2024-11-08
  • 在 Golang 中建立 Google Drive 下載器(第 1 部分)
    在 Golang 中建立 Google Drive 下載器(第 1 部分)
    介绍 在本教程中,我们将构建一个功能强大的下载器,允许从Google Drive和其他云提供商下载文件。借助 Golang 高效的并发模式,您将能够同时管理多个下载、流式传输大文件并实时跟踪进度。无论您是下载一些小文件还是处理大型数据集,该项目都将展示如何构建可扩展且强大的下载器,...
    程式設計 發佈於2024-11-08
  • PHP 4 快速部署
    PHP 4 快速部署
    Servbay 已成為高效配置開發環境的領先工具。在本指南中,我們將引導您完成快速、安全地部署 PHP 8.1 的過程,以展示 Servbay 對簡化部署的承諾。 先決條件 確保您的電腦上安裝了 Servbay。您可以從 Servbay 官方網站輕鬆下載。安裝過程人性化;只需按照安...
    程式設計 發佈於2024-11-08
  • 如何繞過驗證碼
    如何繞過驗證碼
    No matter how many times people wrote that the captcha has outlived itself long time ago and no longer works as effectively as its developers would ha...
    程式設計 發佈於2024-11-08
  • 使用 super 呼叫超類別建構函數
    使用 super 呼叫超類別建構函數
    子類別可以使用 super(parameter-list);. 形式來呼叫其超類別定義的建構函數 parameter-list 必須指定超類別建構子所需的參數。 子類別建構子中執行的第一條語句必須始終是 super(); (或 super(parameter-list); 如果需要傳遞參數). ...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3