重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果直接使用file_get_contents来读取文件,那么在文件很大的时候会很占内容,比如这个文件有1GB的时候。
创新互联建站是一家专业的成都网站建设公司,我们专注成都网站设计、网站建设、网络营销、企业网站建设,外链,广告投放平台为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。
这个时候使用传统的文件操作方式就好的多,因为是查找嘛,逐行读取匹配应该也是可以的,下面是我的一个建议,不知道是否满足你的要求,可以看下:
//
需要查找的内容
$search
=
'bcd';
//
打开文件
$res
=
fopen('a.txt',
'r');
while
($line
=
fgets($res,
1024))
{
//
根据规则查找
if
(strpos($line,
$search)
===
0)
{
//
根据既定规则取得需要的数据
echo
substr($line,
4,
-1);
//
这里就是你想得到的
break;
}
}
//
关闭文件
fclose($res);
describe tablename; //获取表结构信息
describe tablename fieldname; //获取表的某个字段结构信息
比如:describe users username; //获取users表的username字段的结构信息
返回:array(
'Field' ='username',
'Type' ='varchar(50)',
'Null' ='NO',
'Key' ='UNI',
'Default' ='',
'Extra' =''
)
?php
$c = getLine('./a.txt', 10); // 读取a.txt文件第10行内容
echo $c;
/**
* 获取指定行内容
*
* @param $file 文件路径
* @param $line 行数
* @param $length 指定行返回内容长度
*/
function getLine($file, $line, $length = 4096){
$returnTxt = null; // 初始化返回
$i = 1; // 行数
$handle = @fopen($file, "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, $length);
if($line == $i) $returnTxt = $buffer;
$i++;
}
fclose($handle);
}
return $returnTxt;
}
?php
function getFileRows($filename,$start,$num=0)
{
$rowsdata = array();
$lines = file( $filename );
$start = $start -1;
$num = $num == 0 ? count($lines)-$start : $num;
for($i=0;$i$num; $i++)
{
$k = $start + $i;
$rowsdata[] = $lines[$k];
}
return $rowsdata;
}
print_r(getFileRows('1.txt',3,1)); //第三行
print_r(getFileRows('1.txt',5,1)); //第5行
print_r(getFileRows('1.txt',7,1)); //第7行
?
php 函数的参数类型可以指定为类名或数组类型array,比如 这样是对的public function Right( My_Class $a, array $b ) 这样是错的public function Wrong( string $a, boolean $b ) 如果需要其他类型