So prüfen Sie, ob eine Datei eine Zeichenfolge in PHP enthält
Um festzustellen, ob eine bestimmte Zeichenfolge in einer Datei vorhanden ist, untersuchen wir a 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 die Situation zu korrigieren, können wir den Code mithilfe der Funktion file_get_contents() vereinfachen, die die gesamte Datei in einen String liest. Anschließend kann die Funktion strpos() verwendet werden, um zu prüfen, ob die Zeichenfolge $id in dieser Zeichenfolge vorhanden ist:
if( strpos(file_get_contents("./uuids.txt"),$_GET['id']) !== false) {
// do stuff
}
Durch die Verwendung dieses Ansatzes vermeiden wir das zeilenweise Durchlaufen der Datei, was insbesondere bei großen Dateien Zeit und Speicher sparen kann.
Alternative Methode (für Extremely Große Dateien):
Bei übermäßig großen Dateien kann die Verwendung von Dateivorgängen zur Suche nach einer Zeichenfolge zu Leistungsproblemen führen. Alternativ können wir den grep-Befehl verwenden:
if( exec('grep '.escapeshellarg($_GET['id']).' ./uuids.txt')) {
// do stuff
}
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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3