❶ 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]."\">";
}