Heim > Backend-Entwicklung > PHP-Tutorial > php如何把多个php文件的内容写到一个文件中

php如何把多个php文件的内容写到一个文件中

WBOY
Freigeben: 2016-06-23 13:34:02
Original
774 Leute haben es durchsucht

这些缓存php文件都放在cache目录下如:
a.php
b.php
c.php

这些php文件中的内容都是一些缓存数据,我存储的时候都是以数组形式写入:
如:a.php文件
$aArr=array (
  'aaa' => '111',
  'bbb' => '222',
  'ccc' => '3333',
);
?>

如:b.php文件
$bArr=array (
  'aaa' => '111',
  'bbb' => '222',
  'ccc' => '3333',
);
?>

如:c.php文件
$cArr=array (
  'aaa' => '111',
  'bbb' => '222',
  'ccc' => '3333',
);
?>

现在想把这个目录下的所有php文件写到一个php中
下面是我写的代码,但是写入文件后,发现把以后文件php标识也写进来了,把我把缓存文件的数组格式也转义
大师怎么怎么修改一下,
 


//创建缓存目录$dir="cache";$fileDir=@opendir($dir);		if(!$fileDir){    echo '打开目录失败';    exit;}while(false!==($file=@readdir($fileDir))){    //跳过本目录以及上级目录    if ('.' === $file || '..' === $file) continue;						    //获取文件后缀    $filetype=substr($file,strripos($file,".")+1);				    //文件路径    $filepath=$dir.'/'.$file;	    //判断是不是php文件,并判断是否存在    if($filetype=='php' && is_file($filepath)){        $handle = fopen($filepath,"r");          $contents.= fread($handle,filesize($filepath));          fclose($handle);    }			}write('data.php',"<?php\r\n\$listDB=".var_export($contents,true).";\r\n?>");
Nach dem Login kopieren


回复讨论(解决方案)

过滤PHP标识可以这样
第18行改为:

$contents.= rtrim(ltrim(fread($handle,filesize($v)),'<?php'),'?>');
Nach dem Login kopieren


转义是因为var_export这个函数吧。

过滤掉 是不必要的,有时反而会出错(假如数据中就有呢)

$dir = "cache";$out = 'data.php';file_put_contents($out);foreach(glob("$dir/*.php") as $fn) {  file_put_contents($out, file_get_contents($fn), FILE_APPEND);}
Nach dem Login kopieren
Nach dem Login kopieren

过滤掉 是不必要的,有时反而会出错(假如数据中就有呢)

$dir = "cache";$out = 'data.php';file_put_contents($out);foreach(glob("$dir/*.php") as $fn) {  file_put_contents($out, file_get_contents($fn), FILE_APPEND);}
Nach dem Login kopieren
Nach dem Login kopieren




这样写代码好像比我那样写效率要高,学习了!!
但是如果不删除 php 标识,生成的文件就成这样了?该如何改进下??

<?php$aDB=array (  'aaa' => '111',  'bbb' => '222',  'ccc' => '333',);?><?php$bDB=array (  'aaa' => '111',  'bbb' => '222',  'ccc' => '333',);?><?php$cDB=array (  'aaa' => '111',  'bbb' => '222',  'ccc' => '333',);?><?php$dDB=array (  'aaa' => '111',  'bbb' => '222',  'ccc' => '333',);?>
Nach dem Login kopieren


 //获取文件后缀 并确定是否为php后缀if(substr($file, -4)== '.php'){        .........}
Nach dem Login kopieren


我觉得定义一个类  然后抓取数据的就好了,其实没多复杂

str_replace 先把PHP标识替换为空,之后就简单了

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage