PHP正则匹配Html内容,并通过浏览器弹框下载Excel

24 篇文章 1 订阅
16 篇文章 3 订阅

                                            PHP正则匹配Html内容,并通过浏览器弹框下载Excel

一、我结合之前自己写的2篇,写了这一篇

    PHP打印Excel表格并下载  去看看

    PHP正则匹配html标签      去看看

二、浏览器输入地址,访问,弹出Excel下载框

三、下载完成后Excel的内容

四、完整代码

<?php

namespace app\index\controller;

class Ablog extends Base
{

    /**
     * 开始方法
     */
    public function start(){
        $data = $this->getData();
        $this->downExcel($data);
    }

    /**
     * 浏览器弹框下载Excel
     * @param $data 存放到表格中的数据
     */
    public function downExcel($data){
        //打开请求头
        $filename = "博文信息(".date("Ymd").")";
        //设置浏览器信息
        header("Content-type:application/vnd.ms-excel;charset=UTF-8");
        header("Content-Disposition:filename=".$filename.".xls");
        ob_clean();	//清空缓冲区
        echo '<meta http-equiv="Content-Type" content="text/html; charset=GBK" />';
        $content = '<table border="1" cellspacing="0">';	// width="70%"
        $content .='<tr >';//style="font-size: 16px;font-weight: 800;"
        $content .='<th align="center" height="30" width="120">'.mb_convert_encoding("类型",'GBK').'</th>';
        $content .='<th align="center" height="30" width="120">'.mb_convert_encoding("标题",'GBK').'</th>';
        $content .='</tr>';

        foreach ($data as $k => $v){
            $content .='<tr>';
            $content .='<td height="30" align="center">'.mb_convert_encoding($v['type'],'GBK').'</td>';
            $content .='<td height="30" align="center">'.mb_convert_encoding($v['title'],'GBK').'</td>';
            $content .='</tr>';
        }
        $content .='</table>';
        echo $content;
        exit();
    }

    //正则匹配html中的数据
    public function getData(){
        $url  = "https://blog.csdn.net/cungudafa";
        $html = file_get_contents($url);

        //匹配是原创还是转载,匹配标题
        $pattern = '/<span class="article-type type-1 float-none">([^\<]+)<\/span>([^\<]+)<\/a>/';
        preg_match_all($pattern, $html, $result);

        if (empty($result[0])){
            exit('匹配内容失败!');
        }

        //每一个()对应一个数组,默认第0个是匹配所有内容,所以匹配的结果里有3个数组
//        $allHtml = $result[0];
//        var_export($allHtml);die(); //打印看下效果

        //$allType 和 $allTitle 数量一致
        $allType = $result[1];
        $allTitle = $result[2];

        //处理数据
        $data = [];
        foreach ($allType as $key => $value){
            $data[] = [
                'type' => $value,
                'title' => trim($allTitle[$key])    //获取标题,去除空格
            ];
        }
        return $data;
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值