Re: [請益] 將一個有行號的php檔去行號

看板PHP作者 (守護神)時間17年前 (2008/06/28 18:44), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/4 (看更多)
※ 引述《Geniusking (真理斯金)》之銘言: : 假設我原始的檔案如下,有行號。 : 1. <?php : 2. header('content-type: text/html; charset=big5'); : 3. ?> : 我寫一個php程式可以把這個檔案上傳到server的空間 : 然後用fopen開這個檔把他的行號用str_replace去掉 : 但我不知道怎麼直接寫到原本開的檔,這時已經讀到第2行了 : 所以我寫入的話會寫到第2行(?) : 雖然我開新檔寫入可以達到我要的,上傳後要去行號程式碼如下 : 可是這樣就變成有兩個檔案,除非刪掉原本的 : 有辦法直接上傳一個有行號的php檔然後單單對這個檔去行號嗎?(不開新檔) if(!empty($_FILES['UpFile']['name'])){ file_put_contents($upload_dir . $_FILES['UpFile']['name'], trim(preg_replace('/^1\./','', preg_replace('/[\r\n]+\s*\d+\./',"\n", file_get_contents($_FILES['UpFile']['tmp_name']) ) )) ); } : <?php : header("content-type:text/html;charset=big5"); : $upload_dir='./tempfile/'; : if( $_FILES['UpFile']['error'] == UPLOAD_ERR_OK ) { : //將暫存檔搬移到上傳目錄下, 並且改回原始檔名 : move_uploaded_file($_FILES['UpFile']['tmp_name'], : } : else{ : echo "上傳失敗"; : } : if( ! @$fh=fopen( $upload_dir . $_FILES['UpFile']['name'] ,"r+") ){ : die('無法開啟檔案'); : } : //$i 變數用來計算並存放行號 : $i=1; : $new=fopen($upload_dir . "new.php", "w"); : //用 while 迴圈逐行讀取檔案 : while( $str=fgets($fh) ){ : $tmp = $i."."; //找$tmp=1. , 2. , 3. ...etc : $str = str_replace( $tmp , "", $str); //去行號 : fputs( $new, $str );//寫入新檔 : $i=$i+1; //行號加 1, 作為下一次使用的行號 : } : //關閉檔案 : fclose($fh); : fclose($new); : ?> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.158.15

06/28 21:54, , 1F
厲害,感謝!
06/28 21:54, 1F

06/28 22:00, , 2F
不過trim好像只有消除掉第一行的頭尾空白
06/28 22:00, 2F
文章代碼(AID): #18PXO9sQ (PHP)
文章代碼(AID): #18PXO9sQ (PHP)