㈠ php如何读取某目录下的所有同类型文件
PHP的glob() 函数返回匹配指定模式的文件名或目录。
该函数返回一个包含有匹配文件 / 目录的数组。如果出错返回 false。
语法
glob(pattern,flags)
参数
描述
file
必需。规定检索模式。
size
可选。规定特殊的设定。
GLOB_MARK - 在每个返回的项目中加一个斜线
GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
GLOB_NOESCAPE - 反斜线不转义元字符
GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b' 或 'c'
GLOB_ONLYDIR - 仅返回与模式匹配的目录项
GLOB_ERR - 停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误
注释:GLOB_ERR 是 PHP 5.1 添加的。
例子 1
<?php
$a=glob("*.txt");
print_r(count($a));
?>
㈡ PHP读写XML文件技巧
常用 如下 几行
header("content type:text/; charset=utf "); //指定PHP使用UTF 编码 $xml = simplexml_load_file("example xml"); //读取xml文件 $newxml = $xml >雀明厅asXML(); //标准化$xml $fp = fopen("newxml xml" "w"); //新建xml文件 fwrite($fp $newxml); //写入槐搏 xml文件 fclose($fp);
PHP可以方便的生成和读取XML文件 PHP主要通过DOMDocument DOMElement和DOMNodeList来完成XML的读取与写入操作的 下面就简要说明下如何使用这些类
一.生成XML文件 对于一个如下XML文件
[] <?xml version=" " encoding="UTF "?> <article> <title>PHP访问MySql数据库 初级篇</title> <link> </article> <?xml version=" " encoding="UTF "?> <article> <title>PHP访问MySql数据库 初级篇</title> <link> </article> 我们来看看如何用PHP来生成
首先new一个DOMDocument对象并设置编码格式
$dom = newDOMDocument( UTF );
$dom >formatOutput= true;
再创建<article>结点和<title>结点
$rootelement =$dom >createElement("article");
$title =$dom >createElement("title" "PHP访问MySql数据库 初级篇");
然后创建带文本内容的<link>结点
$link =$dom >createElement("link" "
也可以先生成<link>结点再为其添加文本内容
$link = $dom >createElement("link");
$linktext =$dom >createTextNode( );
$link >appendChild($linktext);
然后将<title>和<link>结点加入到<article>结点中去
$rootelement >appendChild($title);
$rootelement >appendChild($link);
最后将<article>结点加入到DOMDocument对象中
$dom >appendChild($rootelement);
这样一个完整的XML就生成完毕了 再整出整个XML
echo $dom >saveXML() ;
saveXML()也可以只输入部分XML文本 如echo $dom >saveXML($link);就只会输出<link>结点 <link>
下面再给出一个完整的PHP中数据内容输出到XML文件的例子顷隐 该例子会对将一个PHP数组输出到XML文件中
[php] <?php //将数组输出到XML文件中 // by MoreWindows( $article_array = array( "第一篇" => array( "title"=>"PHP访问MySql数据库 初级篇" "link"=>" ) "第二篇" => array( "title"=>"PHP访问MySql数据库 中级篇 Smarty技术" "link"=>" ) "第三篇" => array( "title"=>"PHP访问MySql数据库 高级篇 AJAX技术" "link"=>" ) ); $dom = new DOMDocument( UTF ); $dom >formatOutput = true; $rootelement = $dom >createElement("MoreWindows"); foreach ($article_array as $key=>$value) { $article = $dom >createElement("article" $key); $title = $dom >createElement("title" $value[ title ]); $link = $dom >createElement("link" $value[ link ]); $article >appendChild($title); $article >appendChild($link); $rootelement >appendChild($article);
} $dom >appendChild($rootelement); $filename = "D:test xml"; echo XML文件大小 $dom >save($filename) 字节 ; ?> <?php //将数组输出到XML文件中 // by MoreWindows( $article_array = array( "第一篇" => array( "title"=>"PHP访问MySql数据库 初级篇" "link"=>" ) "第二篇" => array( "title"=>"PHP访问MySql数据库 中级篇 Smarty技术" "link"=>" ) "第三篇" => array( "title"=>"PHP访问MySql数据库 高级篇 AJAX技术" "link"=>" ) ); $dom = new DOMDocument( UTF ); $dom >formatOutput = true; $rootelement = $dom >createElement("MoreWindows"); foreach ($article_array as $key=>$value) { $article = $dom >createElement("article" $key); $title = $dom >createElement("title" $value[ title ]); $link = $dom >createElement("link" $value[ link ]); $article >appendChild($title); $article >appendChild($link); $rootelement >appendChild($article); } $dom >appendChild($rootelement); $filename = "D:test xml"; echo XML文件大小 $dom >save($filename) 字节 ; ?> 运行该PHP会在D盘上生成test xml文件(Win + XAMPP + IE 测试通过)
二.读取XML文件 以读取前文中生成的D:test xml为例
[php] <?php //读取XML文件 // by MoreWindows( $filename = "D:test xml"; $article_array = array(); $dom = new DOMDocument( UTF ); $dom >load($filename); //得到<article>结点 $articles = $dom >getElementsByTagName("article"); echo <article> 结点个数 $articles >length; foreach ($articles as $article) { $id = $article >getElementsByTagName("id") >item( ) >nodeValue; $title = $article >getElementsByTagName("title") >item( ) >nodeValue; $link = $article >getElementsByTagName("link") >item( ) >nodeValue; $article_array[$id] = array( title =>$title link =>$link); } //输出结果 echo "<pre>"; var_mp($article_array); echo "</pre>"; ?> <?php //读取XML文件 // by MoreWindows( $filename = "D:test xml"; $article_array = array();
$dom = new DOMDocument( UTF ); $dom >load($filename);
//得到<article>结点 $articles = $dom >getElementsByTagName("article"); echo <article> 结点个数 $articles >length; foreach ($articles as $article) { $id = $article >getElementsByTagName("id") >item( ) >nodeValue; $title = $article >getElementsByTagName("title") >item( ) >nodeValue; $link = $article >getElementsByTagName("link") >item( ) >nodeValue; $article_array[$id] = array( title =>$title link =>$link); }
lishixin/Article/program/PHP/201311/20909
㈢ php 读写文件和数据库哪个快
1、直接读文件相比数据库查询效率更胜一筹,而且文中还没算上连接和断开的时间。
2、一次读取的内容越大,直接读文件的优势会越明显(读文件时间都是小幅增长,这跟文件存储的连续性和簇大小等有关系),这个结果恰恰跟天缘预料的相反,说明MYSQL对更大文件读取可能又附加了某些操作(两次时间增长了近30%),如果只是单纯的厅枝或赋值转换应该是差异偏小才对。
3、写文件和INSERT几乎不用测试就可以推测出,数据库效率只会更差。
4、很小的配置文件如果不需要使用到扮伍数据库特性,更加适合放到独立文件里存取,无需单独创建数据表或记录,很大的文件比如图片、音乐等采用文件存储更为方便,只把路径或缩略图等索引信息放到数据库里更合搭配理一些。
5、PHP上如果只是读文件,file_get_contents比fopen、fclose更有效率,不包括判断存在这个函数时间会少3秒左右。
6、fetch_row和fetch_object应该是从fetch_array转换而来的,我没看过PHP的源码,单从执行上就可以说明fetch_array效率更高,这跟网上的说法似乎相反。
㈣ 关于PHP读写文件
相关
php函数
:
fopen()打开文件。
格式如:fopen("文件路径","r")。
fopen()函数有参数第一个参数要指明文件,第二个参数可以是r,w等,读文件时就可以是r,写文件时可以是w。
fwrite()和
fputs()写文件。
fclose()
关闭文件
。
fgets()读取记录。最常用的是以上这些函数。
㈤ B.php中读取文件内容的几种方法
php读取文件内容:
—–第一种方法—–fread()——–
<?php$file_path= "test.txt";if(file_exists($file_path)){$fp= fopen($file_path,"r");$str= fread($fp,filesize($file_path));//指定读取大小,这里把整个文件内容读取出来echo $str = str_replace("\r\n","<br
/>",$str);
}?>123456789101112131415161718
——–第二种方法————
<?php$file_path= "test.txt";if(file_exists($file_path)){$str= file_get_contents($file_path);//将整个文件内容读入到一个字符串中$str= str_replace("\r\n","<br
/>",$str);echo$str;
}?>
-----第三种方法------------<?php$file_path= "test.txt";if(file_exists($file_path)){$fp= fopen($file_path,"r");$str= "";$buffer= 1024;//每次读取
1024 字节while(!feof($fp)){//循环读取,直至读取完整个文件$str.= fread($fp,$buffer);
}$str= str_replace("\r\n","<br
/>",$str);echo$str;
}?>
-------第四种方法--------------<?php$file_path= "test.txt";if(file_exists($file_path)){$file_arr= file($file_path);for($i=0;$i<count($file_arr);$i++){//逐行读取文件内容echo$file_arr[$i]."<br
/>";
}/*
foreach($file_arr
as $value){
echo
$value."<br />";
}*/}?>2526272829303132333435
—-第五种方法——————–
<?php$file_path= "test.txt";if(file_exists($file_path)){$fp= fopen($file_path,"r");$str="";while(!feof($fp)){$str.= fgets($fp);//逐行读取。如果fgets不写length参数,默认是读取1k。}$str= str_replace("\r\n","<br
/>",$str);echo$str;
}?>252627282930313233343536
㈥ PHP如何读写文件
下个php手册,查看filesystem函数 里面的都是文件操作相关的函数
㈦ php用splfileobject读写文件
SplFileInfo 仅用于获取文件的一些属性信息,如文件大小、文件访问时间、文件修改时间、后缀名等值,而 SplFileObject 是继承 SplFileInfo 这些功能的。
参考代码如下:
SplFileInfo仅用于获取文件的一些属性信息,如文件大小、文件访问时间、文件修改时间、后缀名等值,而SplFileObject是继承SplFileInfo这些功能的。
/**返回文件从X行到Y行的内容(支持php5、php4)
*@paramstring$filename文件名
*@paramint$startLine开始的行数
*@paramint$endLine结束的行数
*@returnstring
*/
functiongetFileLines($filename,$startLine=1,$endLine=50,$method='rb'){
$content=array();
$count=$endLine-$startLine;
//判断php版本(因为要用到SplFileObject,PHP>=5.1.0)
if(version_compare(PHP_VERSION,'5.1.0','>=')){
$fp=newSplFileObject($filename,$method);
$fp->seek($startLine-1);//转到第N行,seek方法参数从0开始计数
for($i=0;$i<=$count;++$i){
陆桐祥悉告$content[]=$fp->current();//current()获取当前行内容
$fp->next();//下一行
}
}else{//PHP<5.1
$fp=fopen($filename,$method);
if(!$fp)return'error:cannotreadfile';
谨明for($i=1;$i<$startLine;++$i){//跳过前$startLine行
fgets($fp);
}
for($i;$i<=$endLine;++$i){
$content[]=fgets($fp);//读取文件行内容
}
fclose($fp);
}
returnarray_filter($content);//array_filter过滤:false,null,''
}
㈧ PHP如何解决多进程同时读写一个文件的方法
/*
*flock(file,lock,block)
*file 必需,规定要锁定或释放的已打开的文件
*lock 必需。规定要使用哪种锁定类型。
*block 可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。
*lock
*LOCK_SH 要取得共享锁定(读取的程序)
*LOCK_EX 要取得独占锁定(写入的程序)
*LOCK_UN 要释放锁定(无论共享或独占)
*LOCK_NB 如果不希望 flock() 在锁定时堵塞
/*
if (flock($file,LOCK_EX))
{
fwrite($file,'write more words');
flock($file,LOCK_UN);
}
else
{
//处理错误逻辑
}
fclose($file);
)