作者dinos (守護神)
看板PHP
標題Re: [請益] 將一個有行號的php檔去行號
時間Sat Jun 28 18:44:22 2008
※ 引述《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
推 Geniusking :厲害,感謝! 06/28 21:54
→ Geniusking :不過trim好像只有消除掉第一行的頭尾空白 06/28 22:00