Heim > Artikel > Backend-Entwicklung > So durchlaufen Sie Dateien in PHP und löschen bestimmte Zeichen
So implementieren Sie PHP-Traversal durch Dateien, um bestimmte Zeichen zu löschen: Erstellen Sie zunächst eine PHP-Beispieldatei und verwenden Sie dann die Methode „function del($getstr){...}“, um die angegebene Zeichenfolge in allen angegebenen Dateien in der angegebenen Datei zu löschen Verzeichnis.
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer
php implementiert das Durchlaufen von Verzeichnissen und das Löschen bestimmter Inhalte in bestimmten Dateien
In diesem Artikel wird hauptsächlich PHP zum Durchlaufen von Verzeichnissen vorgestellt und Löschen Geben Sie den angegebenen Inhalt in der Datei an. Mit dem in diesem Artikel implementierten Tool können Freunde, die es benötigen, darauf verweisen. Jetzt sitze ich in einem ruhigen Schlafsaal. und die Winterferien scheinen mich verlassen zu haben ... Was ich heute gepostet habe, war meine letzte Lernsitzung während der Winterferien, und seitdem schaue ich One Piece.
Früher habe ich ein Verzeichnisdurchlauf- und Dateikopierprogramm in C-Sprache geschrieben. Es war sehr lang und kompliziert. Jetzt kann ich PHP zum Durchlaufen des Verzeichnisses verwenden, und der Code ist viel kürzer. Der Zweck dieses Programms besteht darin, das Verzeichnis zu durchsuchen, alle Dateien mit dem angegebenen Dateinamen zu finden und die angegebene Zeichenfolge zu löschen.
Der Code lautet wie folgt:
<?php //功能:删除指定目录(包括子目录)下所有指定文件中指定字符串 $tmpfiledir = $_SERVER["DOCUMENT_ROOT"].'tmp.txt'; function del($getstr) { $isbak = true; //是否备份原文件,true为备份,false不备份 global $tmpfiledir; $fr = fopen($tmpfiledir,"r") or die('未能打开临时文件'); while($row = fgets($fr)) { if(empty($row)) break; $row = trim($row); $opp = fopen($row,"r") or die("未能打开$row"); $str = fread($opp,filesize($row)) or die("不能读$row"); $str = str_replace($getstr,"",$str); fclose($opp); if($isbak){ copy($row,$row.'.bak') or die("备份文件失败"); } $ref = fopen($row,"w") or die("重新打开文件失败"); fwrite($ref,$str) or die("重新写入文件失败"); } } function traverse($path) { global $name,$tmpfiledir; $current_dir = opendir($path); //opendir()返回一个目录句柄,失败返回false if($current_dir == false) return false; while(($file = readdir($current_dir)) !== false) { //readdir()返回打开目录句柄中的一个条目 $sub_dir = $path . DIRECTORY_SEPARATOR . $file; //构建子目录路径 if($file == '.' || $file == '..') { continue; } else if(is_dir($sub_dir)) { //如果是目录,进行递归 traverse($sub_dir); } else { //如果是文件,再做比较 $fileinfo = pathinfo($sub_dir); if($fileinfo['basename'] == $name) { $fopen = fopen($tmpfiledir,"a"); fwrite($fopen,$sub_dir."\r\n"); fclose($fopen); } } } return true; } if(isset($_POST["name"]) && isset($_POST["dir"]) && isset($_POST["str"])) { $name = $_POST["name"]; traverse($_POST["dir"]) or die("未能创建临时文件,请检查网站根目录是否可写"); del($_POST["str"]); echo "成功"; unlink($tmpfiledir); } else { echo "<p>输入相关信息</p>"; } ?> <form name="input" action="" method="post"> 输入目标文件夹:<input type="text" name="dir"/> 输入目标文件名:<input type="text" name="name"/> 输入需要删除的字符串:<input type="text" name="str" /> <input type="submit" value="提交" /> </form>Sie können sehen, dass ich zwei Funktionen geschrieben habe. Die Funktion traverse schreibt die angegebenen Dateipfade in eine temporäre Datei und die Funktion del löscht die angegebenen Zeichenfolgen in diesen Dateien. Tatsächlich halte ich es auch für nutzlos. Löschen Sie es einfach direkt während des Durchlaufs und es besteht überhaupt keine Notwendigkeit, temporäre Dateien zu generieren.
Eigentlich habe ich die Traversierung am Anfang in der C-Sprache geschrieben, also habe ich PHP verwendet, um den gelöschten Teil zu schreiben, und habe ihn später einfach verwendet PHP zum Durchlaufen von Dateien (es scheint viel einfacher zu sein als C), also habe ich eine weitere Funktion zum Durchlaufen geschrieben. Sie können sich einfach den Traversal-Teil ansehen. Sie können ihn auch mit dem Traversal-Code vergleichen, den ich zuvor in C geschrieben habe (ich habe den Quellcode gesendet), um den Unterschied zu sehen.
Allerdings unterstützt diese Version keine Platzhalter, daher muss der Dateiname angegeben werden. Seine Funktion (auch der Grund, warum ich dies geschrieben habe) besteht darin, dass es die Ein-Satz-Trojaner, die wir auf dem Server hängen, stapelweise löschen kann.
【Empfohlenes Lernen: „
PHP-Video-Tutorial“】
Das obige ist der detaillierte Inhalt vonSo durchlaufen Sie Dateien in PHP und löschen bestimmte Zeichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!