php讀取文件後替換,php替換文本指定內容

本文目錄一覽:

php實現將一個文件中的內容替換

命令行下 “ren *.php *.htm” 就可以啊

如果不只是為了修改文件名 而是為了由動態頁面生成靜態頁面 也就是說生成的htm是那個php的預覽效果頁面

那麼具體的還得根據你的php內部代碼處理

看你提供的那段代碼好像就是實現了一個修改文件名的功能 如果你不願用命令 就是想用php實現這一功能的話 可以這麼寫:

$path=”./”;

$d = dir($path);

while($f=$d-read()) {

if($f==”.”||$f==”..”)continue;//去掉目錄列表中的.和..

$filename=rand(1111111111,9999999999).”.htm”;//從1111111111-9999999999 中產生一個隨機數作為文件名

copy($f,$filename);

}

這個就可以實現你說的功能

但是還有點不是很完善的 你還可以設置輸出的路徑,檢查拷貝狀態 多少文件成功多少失敗等等 如下

$path=”./”;

$outputpath=”out/”;//輸出目錄

@mkdir($outpath);//如果輸出目錄不存在 則創建 已經存在創建失敗,但不顯示出錯信息

$d = dir($path);

$i=0;//記錄文件數量

while($f=$d-read()) {

if($f==”.”||$f==”..”)continue;//去掉目錄列表中的.和..

$i++;

$filename=$outpath.rand(1111111111,9999999999).”.htm”;//從1111111111-9999999999 中產生一個隨機數作為文件名

if(copy($f,$filename))$j++;//拷貝成功的文件個數+1

else continue;

}

echo “共 $i 個文件 成功拷貝 $j 個文件”;

我看到你的消息了 你是要獲取所有的頁面的預覽效果

只需要在copy的文件加上預覽的路徑就可以了

?

$path=”./”; //文件讀取目錄

$d = dir($path);

$i=0;//記錄文件數量

while($f=$d-read()) {

if($f==”.”||$f==”..”||$f==”copyfile.php”)continue;//去掉目錄列表中的.和..以及當前執行的文件

$i++;

$filename=str_replace(“.php”,”.htm”,$f);//將文件的.php替換成.htm

if(copy(“”.$f,$filename))$j++;//拷貝成功的文件個數+1

else continue;

}

echo “共 $i 個文件 成功拷貝 $j 個文件”;

?

在用的時候確保你的目錄先所有的文件都能順利的的執行 我在測試的時候因為目錄中有幾個文件有問題 導致一直不成功 去掉了那幾個文件就很快了

在對文件名進行處理的時候 如果你的目錄下面還有其他類型的文件,建議這樣寫 :

$filename=$f.”.html”;//先將文件擴展名增加.html 比如a.php-》a.php.html

$filename=str_replace(“.php.”,””,$filename); //將”.php”去掉 a.php.html-a.html

這樣可以避免將裡面的非php的文件覆蓋

PHP如何寫入,讀取與替換文件內容

$content = file_get_contents($file); //讀文件

$content = $content . ‘正在修改’; //修改文件

file_put_contents($file, $content); //保存文件

php讀取目錄及子目錄下所有txt文件,再替換每個txt文件里system字符

php中讀取目錄下的文件名的方式確實不少,最簡單的是scandir,具體代碼如下:

$dir=”./目錄名/”;

$file=scandir($dir);

print_r

($file);

php接收二進制文件怎麼替換裡面的內容

php接收二進制文件怎麼替換裡面的內容

php接收二進制文件如下:

?php

header(‘Content-type: text/html; charset=utf-8’);

error_reporting(0);

$filename = $_GET[“filename”];

$filesize = $_GET[“filesize”];

$xmlstr = $GLOBALS[HTTP_RAW_POST_DATA];//$_POST[“data”];//

if(empty($xmlstr)) $xmlstr = file_get_contents(‘php://input’);

$raw = $xmlstr;//得到post過來的二進制原始數據

$file = fopen(“./upload/”.$filename,”w”);//打開文件準備寫入

fwrite($file,$raw);//寫入

fclose($file);//關閉

?

接收的二進制文件中非標準字符(0x7F)的字節被替換為三個字節,比如E2替換為EF 9F A2

現在我想在Php接收到文件之後還原回去,把EF 9F A2替換為E2,請問這個怎麼實現?

非常感謝!

PHP 二進制

——解決方案——————–

他的數據轉換規則是這樣的:

文件頭不變,文件頭多長不清楚,圖上到0050h都一樣的

=7F的字節,因為utf-8也一樣,可以認為也轉換了utf-8

=80的字節,高位加上F7,再轉utf-8,例如E2就變成F7E2然後轉utf-8成為EF 9F A2

至少他圖中E2/FB/91/B2/81…都滿足這個規則

——解決方案——————–

本帖最後由 xuzuning 於 2013-05-02 15:35:02 編輯

用正則可這樣寫

假定數據已把存在變量 $s 中,則

$s = preg_replace_callback(‘/[\xef]../’, ‘foo’, $s);

function foo($r) {

$c = (ord($r[0]{1}) 0x03) 6;

$c += (ord($r[0]{2}) 0x3f);

return chr($c);

}

php讀取目錄及子目錄下所有txt文件,再替換每個txt文件里指定字符

直接給你代碼:

?php

function replaceStringInTxt($path)

{

    $path = ltrim($path, ‘/’) . ‘/’;

    $files = scandir($path);

    if ($files) {

        foreach($files as $file) {

            if ($file == ‘.’ || $file == ‘..’ ){

                continue;

            }

            $newPath = $path. $file;

            if (is_dir($newPath) {

                replaceStringInTxt($newPath);

            }else{

                //開始替換

               $content = file_get_contents($newPath);

               $content = str_replace(“system****config”, “config”, $content);

                  file_put_contents($newPath, $content);

            }

        }

    }

}

//目錄的地址

$path = “C://aa”; 

//執行

replaceStringInTxt($path);

By the way, 代碼未經檢驗,請自行 debug , 隨便寫的。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/188700.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-28 13:33
下一篇 2024-11-28 13:33

相關推薦

發表回復

登錄後才能評論