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

作者:enenba | 发表于:2012-03-15 13:29 | 分类:php采集

PHP试过采集表格这种可恶的数据格式吗?才浏览器下面看很好看的很整齐的样子,在源码下一团糟,采集也麻烦。

于是还是找了个,PHP采集表格数据,返回数组。

说太多了上代码。

 

<?php 
// 将HTML表格的每行每列转为数组,采集表格数据
function get_td_array($table) {
	// 去掉 HTML 标记属性
	$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;
} 

//测试内容    
echo 'enenba.com亲自撸过结果:<br />';   
$str = '
<table width="200" border="1" cellspacing="0" cellpadding="0">
	<tr>
		<td>姓名</td>
		<td>公司</td>
		<td>电话</td>
	</tr>
	<tr>
		<td>小明</td>
		<td>xx科技</td>
		<td>15858585858</td>
	</tr>
	<tr>
	<tr>
		<td>小红</td>
		<td>yy科技</td>
		<td>14848484848</td>
	</tr>
	</tr>
</table>
';

$r = get_td_array($str);
echo $str;
printf("<p>输出数据为:</p><pre>%s</pre>\n",var_export( $r ,TRUE));
?>

 

 

end

 

上一篇: ie6下png图片透明只写CSS,不用JS的hack   |   下一篇:使用PHP让动态链接301重定向至静态文件» 标签: php函数 php采集 数据采集

评论: