❶ php中如何分割文本
PHP用空格分割文本为数组的方法:
php逐行读取文本文件,然后处理空格分隔文本,输出为数组的方法。
文本文档text.txt内容:
1 字段1 字段2 2 字段1 字段2 3 字段1 字段2 4 字段1 字段2
文本和文本之间用空格隔开,用php经过处理,输出为数组,以下是代码:
< php $file = fopen("text.txt", "r") or exit("Unable to open file!");
while(!feof($file)) { $arr = split(' ' , fgets($file)); print_r($arr); } fclose($file); >
输出结果:
Array ( [0] => 1 [1] => 字段1 [2] => 字段2 ) Array ( [0] => 2 [1] => 字段1 [2] => 字段2 ) Array ( [0] => 3 [1] => 字段1 [2] => 字段2 ) Array ( [0] => 4 [1] => 字段1 [2] => 字段2 )
这样就实现了PHP用空格分割文本为数组的方法.
❷ 在php curl库中利用post请求中怎么将一个大文件分成数据块上传
1、正则截取你想要拆分的数据;
2、explode 截取
❸ 怎么把一个大的文件分割成几个小文件
数据文件(EXCEL,CSV,TXT)的分割使用Data.olllo数据助手,可以按照分割为任意个文件,也可以按照关键字来分割,比如里面有字段“城市”,可以按照各个城市来分割文件。
❹ PHP实现浏览器端大文件分片上传如何实现
分片上传的原理就是通过切割上传文件,然后在浏览器的头部通过etag来进行划分文件传输,服务器端接收到文件片段和分割起始符之后,进行拼接文件,最后合成一个大文件。
你可以自己通过php来获取浏览器头部传输标志来进行文件的拼接组装,也可以通过现有的大文件传输类来上传文件。
记住分割文件点,也就是分割文件的顺序,拼接文件需要通过etag按照顺序拼接,分片可以并发传输,这其实也是并发下载的原理。
❺ php分割txt文本
先分割为数组,在每次取出数组的2000条存为一个数组,存储的时候把数据分割开。
❻ 怎么用php分割出这样的内容
$arr = explode('###',$str);
$str2 = '';
foreach($arr as $v){
$text = explode('$',$v)[0];
$url = explode('$',$v)[1];
$str2 += "<li><a href='{$url}'>{$text}</a></li>";
}
echo $str2;
基本思路就是
先把每条的数据拿出来,用###分割的
每条数据中用$分割的 ,第一部分是展现是的文字,第二部分是url
组合字符串展示出来
❼ php处理大文件文件
我前几天有一个面试,面试题就是有这样一道题。先把自己的思路说一下,因为信息量非常的大,所以我采用了分表,分成24张表,每个小时一张,虽然凌晨时刻的表可能很少数据,但这样sum字段的问题就容易解决了,我理解的sum字段是一个小时同一个用户在相同的环境的登陆次数。这样理解不知对否,请网友自行甄辨。然后我通过PHP中的fgets函数一行一行的数据取出,入表。实验了几万条数据是没有问题的,但是上亿条数据可能够呛。这一点也请网友注意,我也是新手。只是看到这里没有答案,给大家一个参考。废话不多,看流程:
日志文件(access.log)格式:
200/alipeng.gif?zoneid=2&bannerid=44&clentid=6&materialid=64&redirect=http%3a%2f%2fwww.alipeng.cn&time=1384444800.832&ip=127.0.0.1&user_agent=Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/31.0.1650.48Safari/537.36&utrace=
502/alipeng.gif?zoneid=2&bannerid=44&clentid=6&materialid=64&redirect=http%3a%2f%2fwww.alipeng.org&time=1384444800.904&ip=127.0.0.1&user_agent=Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/31.0.1650.48Safari/537.36&utrace=
配置文件cfg.php:
define(HOST,'localhost');//主机名
define(USER,'root');//数据库账号
define(PASS,'111111');//数据库密码
define(DBNAME,'test');//所用的数据库
define(CHARSET,'utf8');//使用的字符集
具体代码test.php:
<?php
header("content-type:text/html;charset=utf-8");
require'./cfg.php';
$link=mysql_connect(HOST,USER,PASS)ordie('连接数据库失败');
//程序中自动建库和建表,这样一定程度上拖慢了程序的速度
//创建数据库
$crdb="createdatabaseifnotexists".DBNAME;
if(!mysql_query($crdb)){
die('创建数据库失败');
}
//链接数据库
mysql_select_db(DBNAME)ordie('选择数据库失败');
mysql_set_charset(CHARSET);
//因为数据量很大我将数据按小时分表,分成24个表,每小时一个表,这样num字段的值也好做统计
//数据循环建表
for($i=0;$i<24;$i++){
if($i<10){
$tbhz='0'.$i;//如果前10张表,表后缀应该是00-09
}else{
$tbhz=$i;
}
$ctbsql="_{$tbhz}(
idintnotnullauto_incrementprimarykey,
zoneidintnotnulldefault0,
banneridintnotnulldefault0,
clentidintnotnulldefault0,
materialidintnotnulldefault0,
redirectchar(200)notnulldefault'',
timechar(16)notnulldefault'',
user_agentchar(200)notnulldefault'',
utracechar(32)notnulldefault'',
sumintnotnulldefault0
)TYPE=_general_ci";
mysql_query($ctbsql);
}
//打开文件
$file=fopen("./access.log",'r')ordie("打开文件失败");
//对文件内容进行循环,直到文件末尾才停止
while(!feof($file)){
//每次读取一行
$line=fgets($file,1024);
//状态是200的进行写入数据库操作
if(preg_match('/^200/',$line)){
$pinfo=parse_url($line);//url信息
$ext=$pinfo['query'];//取得传递的各个参数
$parray=explode('&',$ext);//根据&分解为数组
//因为分解为数组后并不是要的值,所以要对值进行一次截取,将等号及等号左边的都去掉
foreach($parrayas$val){
$narray[]=ltrim(strstr($val,'='),'=');
}
$narray[8]=rtrim($narray[8],'_');
//截取时间的秒数
$getmun=substr($parray[5],5,10);
$time=date('Y-m-dH',$getmun);//将秒数转化为时间类型。
//得到表后缀
$tbhz=date('H',$getmun);
$sql="insertintologininfo_{$tbhz}values(null,'{$narray[0]}','{$narray[1]}','{$narray[2]}','{$narray[3]}','{$narray[4]}','{$time}','{$narray[7]}','{$narray[8]}',0)";
//echo$sql;
$res=mysql_query($sql);//执行插入
if(!$res||!mysql_affected_rows()>0){
die('写入数据库失败');
}
unset($narray);//循环一次将narray销毁,为下一次循环做准备
//var_mp(parse_url($line)['query']);
}
}
fclose($file);//关闭
//因为sum字段还是0,下面代码段需要处理sum字段的值
//24张表循环处理
for($i=0;$i<24;$i++){
if($i<10){
$tbhz='0'.$i;//如果前10张表,表后缀应该是00-09
}else{
$tbhz=$i;
}
//该sql语句是把同一个小时内,并且符合条件相等的登陆的总次数和需要的登陆信息查出,为下面修改sum做准备
$sql="SELECTCOUNT('zoneid')ASsum,zoneid,bannerid,clentid,materialid,redirect,user_agent,utraceFROMlogininfo_{$tbhz}GROUPBYzoneid,bannerid,clentid,materialid,redirect,user_agent,utrace";
//发送查询sql
$res=mysql_query($sql);
if($res&&mysql_num_rows($res)>0){
while($row=mysql_fetch_assoc($res)){
//修改sum字段,即同一小时内的登陆次数
$upsql="updatelogininfo_{$tbhz}setsum='{$row['sum']}'wherezoneid='{$row['zoneid']}'andbannerid='{$row['bannerid']}'andclentid='{$row['clentid']}'andmaterialid='{$row['materialid']}'andredirect='{$row['redirect']}'anser_agent='{$row['user_agent']}'antrace='{$row['utrace']}'";
//发送修改sql,执行修改sum
$upres=mysql_query($upsql);
if(!$upres){
die('修改登陆sum失败');
}
}
}
}
echo'数据成功入表';
使用说明:
将配置文件cfg.php中的连接数据库账号、密码修改为自己本机的(默认新增的库名是test)
直接运行test1.php
❽ 请问如何用PHP分割内容
$arr1=explode("\n",$imgtxt);
for($arr1 as $v){
$arr2=explode("::::::",$v);
echo "<img src=\"".$arr2[1]."\" alt=\"".$arr2[0]."\" width=\"".$arr2[2]."\" height=\"".$arr2[3]."\">";
}