Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann man mit PHP effizient nach einer Zeichenfolge in einer Datei suchen?
So überprüfen Sie in PHP, ob eine Datei eine Zeichenfolge enthält
Um festzustellen, ob eine bestimmte Zeichenfolge in einer Datei vorhanden ist, untersuchen wir Folgendes: Lösung und eine effizientere Alternative.
Originalcode:
Der bereitgestellte Code versucht, das Vorhandensein einer Zeichenfolge in einer Datei zu überprüfen, angegeben durch die Variable $id , indem Sie die Datei Zeile für Zeile lesen. Allerdings prüft die Bedingung (strpos($buffer, $id) === false) in der while-Schleife fälschlicherweise, ob die Zeichenfolge fehlt, was zur logischen Negation des gewünschten Ergebnisses führt.
Verbesserte Lösung:
Um Abhilfe zu schaffen, können wir den Code mit der Funktion file_get_contents() vereinfachen, die die gesamte Datei in einen String einliest. Dann kann die Funktion strpos() verwendet werden, um zu prüfen, ob die Zeichenfolge $id in dieser Zeichenfolge vorhanden ist:
<code class="php">if( strpos(file_get_contents("./uuids.txt"),$_GET['id']) !== false) { // do stuff }</code>
Mit diesem Ansatz vermeiden wir, die Datei Zeile für Zeile zu durchlaufen. Dies kann insbesondere bei großen Dateien Zeit und Speicherplatz sparen.
Alternative Methode (für extrem große Dateien):
Verlassen Sie sich bei übermäßig großen Dateien auf Dateioperationen zur Suche denn eine Saite kann Leistungsprobleme mit sich bringen. Alternativ können wir den grep-Befehl verwenden:
<code class="php">if( exec('grep '.escapeshellarg($_GET['id']).' ./uuids.txt')) { // do stuff }</code>
Dieser Ansatz verwendet das grep-Dienstprogramm des Systems, um die Zeichenfolge in der Datei zu finden, wodurch die Arbeitsbelastung des PHP-Skripts selbst reduziert und gleichzeitig eine vergleichbare Effizienz erzielt wird.
Das obige ist der detaillierte Inhalt vonWie kann man mit PHP effizient nach einer Zeichenfolge in einer Datei suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!