永发信息网

php 提取页面中的特定数字 并将这些数字相加!哪位大神会

答案:2  悬赏:70  手机版
解决时间 2021-03-04 05:39
php 提取页面中的特定数字 并将这些数字相加!哪位大神会
最佳答案
其实逻辑很简单的,就是首先取得table中的内容,然后按行拆分,在对每行按列拆分,最后将每列的内容相加就可以了。
需要说明的是,这里只假设你的页面只有一个,如果有多个的话,下面的$pattern需要进行修改。不过我想针对你的问题应该够了。
// 从网页读取html内容或者你直接设置为html字符串
$html = file_get_contents('url地址');
// 去除所有空格
$html = preg_replace('/\s+/', '', $html);
$pattern = '/\]*?\>(.*?)\<\/table\>/';
$trs = '';
$matches = array();
// 用于保存每列数据之和
$trSums = array();
// 获取
内容
if (preg_match($pattern, $html, $matches)) {
$trs = $matches[1];
// 按行拆分
$trs = preg_split('/\<\/tr\>\]*?\>/', $trs);
// 按列拆分
foreach ($trs as &$tr) {
$tr = preg_split('/\<\/td\>\]*?\>/', $tr);
foreach ($tr as $col => &$td) {
$td = trim(strip_tags($td));
if (!isset($trSums[$col])) {
$trSums[$col] = 0;
}
$trSums[$col] += $td;
}
}
}
?>
$trSums就是你要的了,注意,$trSums[0]就是第一列的值。追问亲 很感谢你的回答 我的就是 一个页面有好几个表格而且是嵌套的 只提取其中一个ID为TB1的表格数据 那个要怎么改呢追答把$pattern换成下面的就可以了
$pattern = '/\]*?id=\"tb1\"[^>]*?\>(.*?)\<\/table\>/';追问亲还是有点问题 可以远程帮我看一下吗?追答我试过了,是没有问题的追问
我的表格结构是这样的   要取的值是 画黑框的值  现在我把

打印出来的是

就是只将字按列拆分了  数字没有按列拆分?

这个加法怎么去掉呢?
追答麻烦看仔细了,[2]=>string(1994)...这里的长度是1994,但是显示的那串数字并没有这么多,这是因为这个字符串里面有标签,而标签并没有显示,你看到的只有数字而已,你应该查看源代码,而不是看浏览器的显示。
我给的代码是按列拆分了的,但是你这里的问题是最后一行不应该处理,因为合计那一行的列比较特殊且也比应该在进行相加。你自己把最后一行去掉就可以了。

// 这里循环的是行
foreach ($trs as &$tr) {
$tr = preg_split('/\<\/td\>\]*?\>/', $tr);
// 这里是将每行拆分成列
foreach ($tr as $col => &$td) {
$td = trim(strip_tags($td));
// 这里是计算每列的和
if (!isset($trSums[$col])) {
$trSums[$col] = 0;
}
$trSums[$col] += $td;
}
}
全部回答
  • 1楼网友:空山清雨
  • 2021-03-03 13:36
用正则匹配出这些数字,再用循环计算每一列的总和追问大神 具体要怎么做啊 我 是这个菜鸟 这个东西 急着用 跪谢!!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯