php file del 方法,php怎么遍歷文件刪除指定字符

php遍歷文件刪除指定字符的實現方法:首先創建一個PHP示例文件;然后通過“function del($getstr){…}”方法刪除指定目錄下所有指定文件中指定字符串即可。

本文操作環境:windows7系統、PHP7.1版,DELL G3電腦

php實現遍歷目錄并刪除指定文件中指定內容

這篇文章主要介紹了php實現遍歷目錄并刪除指定文件中指定內容,本文實現的工具可以用來刪除服務器上的一句話木馬,需要的朋友可以參考下

現在正坐在安靜的寢室里,寒假儼然已經離我而去了……今天發的是我寒假里搞的最后一次學習,之后的時間就一直在看海賊王了。

以前寫過一個C語言的遍歷目錄+復制文件的程序,很長很復雜,現在用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 "

輸入相關信息

";

}

?>

輸入目標文件夾:

輸入目標文件名:

輸入需要刪除的字符串:

你們可以看到我寫了兩個函數,函數traverse將查找到的指定文件路徑寫在一個臨時文件里,函數del刪除這些文件里的指定字符串。其實我也覺得很雞肋,直接在遍歷的時候刪除就可以了,根本不用生成什么臨時文件。

其實我一開始是用C語言寫好的遍歷,因為C語言不好對文件操作所以才用php寫刪除的部分,所以一開始只寫了一個del函數,后來干脆把遍歷文件也用php寫了(似乎比C簡單的多),所以又寫了一個函數traverse。大家只管看遍歷的部分就成,也可以和我之前用C寫的遍歷的代碼對比(我發了源代碼的),看看有什么不同。

不過這個版本不支持通配符,所以文件名必須要指定。作用嘛(也是我寫這個的理由),可以批量刪除我們掛在服務器上的一句話木馬。

【推薦學習:《PHP視頻教程》】

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529965.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529965.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529965.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

event類型 php,深入解析PHP的Laravel框架中的event事件操作

有時候當我們單純的看 Laravel 手冊的時候會有一些疑惑,比如說系統服務下的授權和事件,這些功能服務的應用場景是什么,其實如果沒有經歷過一定的開發經驗有這些疑惑是很正常的事情,但是當我們在工作中多加思考會發現有時候這些服務…

php 抽象類 靜態方法嗎,php中的抽象類和靜態方法是什么

php中的抽象類是指:在class前加了abstract關鍵字且存在抽象方法的類,它不能被直接實例化;靜態方法是指:被static關鍵字修飾的方法,靜態方法用于操作靜態屬性。抽象類抽象類是指在 class 前加了 abstract 關鍵字且存在抽…

python目錄結構生成庫,使用CMake構建平臺無關的目錄結構

我試圖為我的跨平臺項目創建一個目錄結構,但遇到了一些問題。我已經讓CMake確定了放置庫和可執行文件的適當位置,但這種結構僅適用于Windows。在我的結構如下所示:項目目錄垃圾箱可執行文件圖書館圖書館Python增壓模塊python腳本這在Windows上…

centos 怎樣下載php,centos下怎樣安裝軟件

centos下安裝軟件的方法是:centos安裝軟件的命令1、rpm包的安裝1.安裝一個包# rpm -ivh2.升級一個包# rpm -Uvh3.移走一個包# rpm -e4.安裝參數--force 即使覆蓋屬于其它包的文件也強迫安裝--nodeps 如果該RPM包的安裝依賴其它包,即使其它包沒裝&#xf…

php fpm 安裝配置,php php+fpm安裝配置

sudo apt - get install php5 - cgi php5 - mysql php5 - fpm php5 - curl php5 - gd php5 - idn php - pear php5 - imagick php5 - imap php5 - mcrypt php5 - mhash php5 - ming php5 - pspell php5 - recode php5 - snmp php5 - tidy php5 - xmlrpc php5 - xsl打開 /etc/ph…

php post 微信沙箱,微信支付平臺錯誤:獲取沙箱密鑰失敗,確保交易密鑰是

按官方提示進行獲取沙箱密鑰的時候,久試不爽,總是提示錯誤 :“獲取沙箱密鑰失敗,確保交易密鑰是否正確”。這個純粹是微信平臺挖的坑呀,文檔沒有詳細的進行一些講解,也沒有提示需要key,下面來說…

shell腳本執行oracle刪除表,shell腳本操作oracle刪除表空間、創建表空間、刪除用戶...

oracle下表空間的導出,用戶的刪除,表空間刪除,用戶新建,表空間新建,數據導入的shell使用非oracle用戶執行該腳本參數說名$1:base表空間的用戶名$2:同步表空間的用戶名使用場景測試用&#xff0c…

PHP標題獲取數據庫內容,php – 如何從數據庫獲取項目的標題并將其發送到CodeIgniter中的標題模板...

嘗試這個>型號更改>控制器已更改。在模型中function get_card($card){$query $this->db->query("SELECT * FROM table_name WHERE creditcards $card ");$result $query->result_array();$count count($result); # Newif(empty($count)){ # Newre…

php教程調用數據庫,PHP數據庫調用類調用實例,php數據庫調用實例_PHP教程

PHP數據庫調用類調用實例,php數據庫調用實例config("dnsaaa;uidsa;pwdsa;dbnametest");//3.選擇數據庫$dbname $db->select_db("test");//4.設置允許調試$db->debug true;//5.執行一條不返回結果的SQL語句$db->execute("insert…

linux顯示磁盤使用情況命令,Linux中監控磁盤分區和使用情況的幾個工具

導讀在文章中將討論Linux中可用于監視磁盤使用情況的命令行實用程序,提供有關總大小容量、已用總量、文件系統信息和分區信息等。讓我們看看這些工具如何幫助檢索這些信息df命令df是一個Linux命令行實用程序,用于監視Linux磁盤使用情況。df命令顯示文件系…

linux網絡是文件嗎,linux網絡配置文件是什么意思

離開了么放得下我么回來了么還會愛我么新兵答主07-22TA獲得超過2383個贊網卡的配置:1.網卡配置文件對于網卡信息的配置通常包括:配置IP地址、子網掩碼和網關。網卡信息保存在網卡配置文件中。網卡配置文件位于/etc/sysconfig/network-scripts目錄下。一塊…

cd linux給u盤安裝程序,使用U盤安裝CDlinux

3、先把u盤插在電腦上與電腦連接,格式化成“FAT”文件系統,更改卷標為“CDLINUX”,之后再打開UltraISO工具進行寫入:a、這里把你下載好的CDlinux文件打開。b、點擊“寫入硬盤映像”c、這里直接默認就好,點擊“寫入”4、…

linux7 telnet亂碼,CentOS7安裝配置telnet-server

1.安裝xinetd和telnet-serveryum -y install telnet-server xinetd2.啟服務(服務管理方式和CentOS6稍有區別)systemctl enable xinetd.serversystemctl enable telnet.socketsystemctl start telnet.socketsystemctl start xinetd.server注意:因為是由xinetd管理,這…

windows和linux存儲float,C語言float型數據在內存中的儲存方式

菜單導航/URHere/面包屑,通過CSS中的content簡潔表達代碼比如我們要寫一個菜單導航/URHere/面包屑,如: 首頁 > 個人中心 > 修改密碼 代碼: tolua雜記1 字符串調用luaFunc :DoString public class CallLuaFunction : MonoBehaviour { private…

Linux編譯C沒有文件名,crt1.o linux x64上沒有這樣的文件c編譯錯誤

我正在linux平臺上邁出第一步.我安裝了Centos x64.我正在嘗試構建一個包含幾個函數和幾個單元測試的小程序.我使用Netbeans 7.1.2作為開發環境.以下是構建過程的輸出:CLEAN SUCCESSFUL (total time: 671ms)"/usr/bin/gmake" -f nbproject/Makefile-Debug.…

linux nmap下載教程,Linux_在Linux系統上用nmap掃描SSL漏洞的方法,以下載nmap 6.45及以上版本。如 - phpStudy...

在Linux系統上用nmap掃描SSL漏洞的方法以下載nmap 6.45及以上版本。如果懶的重新安裝,可以直接下載ssl-heartbleed.nse 腳本。使用nmap 6.45掃描服務器心臟出血漏洞(heartbleed)的具體方法(步驟)如下:當然,你要先按好nmap,自己可以…

Linux的網絡協議族是什么,Linux 網絡協議的概述

網絡層協議網絡層協議主要包括 IP、ICMP(網絡控制報文協議)、ARP(地址解析協議)IP協議該協議被設計成互聯分組交換通信網,以形成一個網際通信環境。它負責在源主機和目的地主機之間傳輸來自其較高層軟件的稱為數據報文的數據塊,它在源和目的地之間提供非…

linux百度文字識別,基于Linux平臺的圖片文字識別系統

摘要:圖片文字識別OCR(Optical Character Recognition,光學字符識別)應用非常廣泛。例如DNA序列圖片識別;PDF文字識別;車牌號碼自動識別;手機上的手寫輸入識別等。近年來該應用更加廣泛,必然出現在教育領域的一款手機應用,將手機把試卷拍照查詢答案,首先就是圖片文字…

zenmap掃描出來linux,如何在Linux上使用NMAP安全掃描器

Nmap是一個免費的開源網絡發現和安全審計實用程序,在Linux用戶社區中被廣泛使用,因為它使用起來非常強大。 Nmap通過在特定目標(通過IP)發送數據包,并通過解釋傳入的數據包來確定哪些帖子被打開/關閉,掃描系統上運行什么服務&…

linux上的中國象棋游戲下載,中國象棋下載_中國象棋最新下載_玩一玩游戲

中國象棋是起源于中國,的一種棋類游戲,屬于兩個人之間的對抗,在中國有著悠久的歷史。由于它的器皿簡單,趣味性強,它已經成為一種非常受歡迎的棋類活動。中國象棋是中華民族的文化瑰寶,歷史悠久,…