×

php采集表格

php采集表格(php采集源码)

admin admin 发表于2023-03-30 21:52:12 浏览46 评论0

抢沙发发表评论

本文目录一览:

php怎样读取excel表格内容?

常用的用PHP读取EXCEL的方法有以下三种,各自有各自的优缺点。个人推荐用第三种方法,因为它可以跨平台使用。\x0d\x0a\x0d\x0a1. 以.csv格式读取\x0d\x0a\x0d\x0a将.xls转换成.csv的文本格式,然后再用PHP分析这个文件,和PHP分析文本没有什么区别。\x0d\x0a\x0d\x0a优点:跨平台,效率比较高、可以读写。\x0d\x0a\x0d\x0a缺点:只能直接使用.csv的文件,如果经常接受.xls二进制文件的话需要手工转换,不能自动化。一个文件只有一个SHEET。\x0d\x0a\x0d\x0aPHP有自带的分析.csv函数:fgetcsv\x0d\x0a\x0d\x0aarray fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )\x0d\x0a\x0d\x0ahandle 一个由 fopen()、popen() 或 fsockopen() 产生的有效文件指针。\x0d\x0a\x0d\x0alength (可选)必须大于 CVS 文件内最长的一行。在 PHP 5 中该参数是可选的。如果忽略(在 PHP 5.0.4 以后的版本中设为 0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。\x0d\x0a\x0d\x0adelimiter (可选)设置字段分界符(只允许一个字符),默认值为逗号。\x0d\x0a\x0d\x0aenclosure (可选)设置字段环绕符(只允许一个字符),默认值为双引号。该参数是在 PHP 4.3.0 中添加的。 和 fgets() 类似,只除了 fgetcsv() 解析读入的行并找出 CSV 格式的字段然后返回一个包含这些字段的数组。\x0d\x0a\x0d\x0afgetcsv() 出错时返回 FALSE,包括碰到文件结束时。\x0d\x0a\x0d\x0a注意: CSV 文件中的空行将被返回为一个包含有单个 null 字段的数组,不会被当成错误。\x0d\x0a\x0d\x0a当然也可以自己手动分析字符串。\x0d\x0a\x0d\x0a还可以利用fputcsv函数将行格式化为 CSV 并写入文件指针。\x0d\x0a\x0d\x0a2. ODBC链接数据源\x0d\x0a\x0d\x0a优点:支持多种格式,cvs, xls等。支持读写,使用标准SQL语言,和SQLSERVER、MYSQL数据库几乎完全一样。\x0d\x0a\x0d\x0a缺点:值支持windows服务器\x0d\x0a\x0d\x0a3. PHP自定义类\x0d\x0a\x0d\x0a优点:跨平台。某些类支持写操作。支持.xls二进制文件\x0d\x0a\x0d\x0a常用的类有phpExcelReader、PHPExcel。其中后者支持读写,但是需要php5.2以上版本。\x0d\x0a\x0d\x0aphpExcelReader是专门用来读取文件的。返回一个数组,包含表格的所有内容。\x0d\x0a\x0d\x0a该 class 使用的方法可以参考网站下载回来的压缩档中的 example.php。\x0d\x0a\x0d\x0a不过我下载回来的 (版本 2009-03-30),有两点要注意:\x0d\x0a\x0d\x0areader.php 中的下面这行要修改\x0d\x0a\x0d\x0a将 require_once ‘Spreadsheet/Excel/Reader/OLERead.php’;\x0d\x0a\x0d\x0a改为 require_once ‘oleread.inc’;\x0d\x0a\x0d\x0aexample.php 中\x0d\x0a\x0d\x0a修改 $data-setOutputEncoding(’CP1251′);\x0d\x0a\x0d\x0a为 $data-setOutputEncoding(’CP936′);\x0d\x0a\x0d\x0aexample2.php 中\x0d\x0a\x0d\x0a修改 nl2br(htmlentities($data-sheets[$sheet]['cells'][$row][$col]));\x0d\x0a\x0d\x0a为 $table_output[$sheet] .= nl2br(htmlspecialchars($data-sheets[$sheet]['cells'][$row][$col]));\x0d\x0a\x0d\x0a不然中文会有问题。\x0d\x0a\x0d\x0a繁体的话可以修改为CP950、日文是CP932,具体可参考codepage说明。\x0d\x0a\x0d\x0a修改 $data-read(’jxlrwtest.xls’) 为自己的 excel 文件名,zip 档中附的 jxlrwtest.xls 应该是坏了。

用PHP进行数据采集

$strPreg = "|td[^]+([^]+)\/td\s*td[^]+([^]+)\/td\s*td[^]+([^]+)\/td|U";

搞定了才发现你都没悬赏分。。。

怎样用php制作表格?

1、建立一个数组,取名为$ShuZu,举例数组的内容是学生的信息,包括姓名、性别和年龄。

$ShuZu = array

(

array("姓名","性别","年龄"),

array("张三","男",13),

array("里斯","女",12),

array("王五","男",15)

);

2、建立一个变量,用来存储需要显示的表格。

$BiaoGe = "";

给¥BiaoGe赋初始值,

$BiaoGe = $BiaoGe."table ";

3、构建外循环,取出数组$ShuZu中的行数。

for ($i=0; $icount($ShuZu); $i++)

{

$BiaoGe = $BiaoGe. "tr";

$BiaoGe = $BiaoGe. "/tr";

}

4、构建内循环,取出每行中的每一个列。

for ($i=0; $icount($ShuZu); $i++)

{

$BiaoGe = $BiaoGe. "tr";

for ($j=0;$jcount($ShuZu[$i]);$j++)

{

$BiaoGe = $BiaoGe. "td".$ShuZu[$i][$j]."/td";

}

$BiaoGe = $BiaoGe. "/tr";

}

5、加入表示表格结尾的html标记。

$BiaoGe = $BiaoGe. "/table";

6、使用echo 方法显示表格。

echo  $BiaoGe;

7、查看运行结果,这样,表格就制作完成了。

PHP 采集程序中常用的函数

复制代码

代码如下:

//获得当前的脚本网址

function

get_php_url()

{

if(!empty($_SERVER[”REQUEST_URI”]))

{

$scriptName

=

$_SERVER[”REQUEST_URI”];

$nowurl

=

$scriptName;

}

else

{

$scriptName

=

$_SERVER[”PHP_SELF”];

if(empty($_SERVER[”QUERY_STRING”]))

$nowurl

=

$scriptName;

else

$nowurl

=

$scriptName.”?”.$_SERVER[”QUERY_STRING”];

}

return

$nowurl;

}

//把全角数字转为半角数字

function

GetAlabNum($fnum)

{

$nums

=

array(”0”,”1”,”2”,”3”,”4”,”5”,”6”,”7”,”8”,”9”);

$fnums

=

“0123456789″;

for($i=0;$i=9;$i++)

$fnum

=

str_replace($nums[$i],$fnums[$i],$fnum);

$fnum

=

ereg_replace(”[^0-9\.]|^0{1,}”,””,$fnum);

if($fnum==””)

$fnum=0;

return

$fnum;

}

//去除HTML标记

function

Text2Html($txt)

{

$txt

=

str_replace(”

“,” ”,$txt);

$txt

=

str_replace(””,””,$txt);

$txt

=

str_replace(””,””,$txt);

$txt

=

preg_replace(”/[\r\n]{1,}/isU”,”br/\r\n”,$txt);

return

$txt;

}

//清除HTML标记

function

ClearHtml($str)

{

$str

=

str_replace('','',$str);

$str

=

str_replace('','',$str);

return

$str;

}

//相对路径转化成绝对路径

function

relative_to_absolute($content,

$feed_url)

{

preg_match('/(http|https|ftp):\/\//',

$feed_url,

$protocol);

$server_url

=

preg_replace(”/(http|https|ftp|news):\/\//”,

“”,

$feed_url);

$server_url

=

preg_replace(”/\/.*/”,

“”,

$server_url);

if

($server_url

==

”)

{

return

$content;

}

if

(isset($protocol[0]))

{

$new_content

=

preg_replace('/href=”\//',

‘href=”‘.$protocol[0].$server_url.'/',

$content);

$new_content

=

preg_replace('/src=”\//',

'src=”‘.$protocol[0].$server_url.'/',

$new_content);

}

else

{

$new_content

=

$content;

}

return

$new_content;

}

//取得所有链接

function

get_all_url($code){

preg_match_all('/a\s+href=[”|\']?([^”\'

]+)[”|\']?\s*[^]*([^]+)\/a/i',$code,$arr);

return

array('name'=$arr[2],'url'=$arr[1]);

}

//获取指定标记中的内容

function

get_tag_data($str,

$start,

$end)

{

if

(

$start

==

||

$end

==

)

{

return;

}

$str

=

explode($start,

$str);

$str

=

explode($end,

$str[1]);

return

$str[0];

}

//HTML表格的每行转为CSV格式数组

function

get_tr_array($table)

{

$table

=

preg_replace(”‘td[^]*?'si”,'”‘,$table);

$table

=

str_replace(”/td”,'”,',$table);

$table

=

str_replace(”/tr”,”{tr}”,$table);

//去掉

HTML

标记

$table

=

preg_replace(”‘[\/\!]*?[^]*?'si”,””,$table);

//去掉空白字符

$table

=

preg_replace(”‘([\r\n])[\s]+'”,””,$table);

$table

=

str_replace(”

“,””,$table);

$table

=

str_replace(”

“,””,$table);

$table

=

explode(”,{tr}”,$table);

array_pop($table);

return

$table;

}

//将HTML表格的每行每列转为数组,采集表格数据

function

get_td_array($table)

{

$table

=

preg_replace(”‘table[^]*?'si”,””,$table);

$table

=

preg_replace(”‘tr[^]*?'si”,””,$table);

$table

=

preg_replace(”‘td[^]*?'si”,””,$table);

$table

=

str_replace(”/tr”,”{tr}”,$table);

$table

=

str_replace(”/td”,”{td}”,$table);

//去掉

HTML

标记

$table

=

preg_replace(”‘[\/\!]*?[^]*?'si”,””,$table);

//去掉空白字符

$table

=

preg_replace(”‘([\r\n])[\s]+'”,””,$table);

$table

=

str_replace(”

“,””,$table);

$table

=

str_replace(”

“,””,$table);

$table

=

explode('{tr}',

$table);

array_pop($table);

foreach

($table

as

$key=$tr)

{

$td

=

explode('{td}',

$tr);

array_pop($td);

$td_array[]

=

$td;

}

return

$td_array;

}

//返回字符串中的所有单词

$distinct=true

去除重复

function

split_en_str($str,$distinct=true)

{

preg_match_all('/([a-zA-Z]+)/',$str,$match);

if

($distinct

==

true)

{

$match[1]

=

array_unique($match[1]);

}

sort($match[1]);

return

$match[1];

}

怎么用php采集网站数据

简单的分了几个步骤:

1、确定采集目标

2、获取目标远程页面内容(curl、file_get_contents)

3、分析页面html源码,正则匹配你需要的内容(preg_match、preg_match_all),这一步最为重要,不同页面正则匹配规则不一样

4、入库