PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > PHP教程 > 正文

    php通过正则提取页面相关信息

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:1、获取页面标题//提取标题 preg_match(&#39;/<title>(?<title>.*?)<\/title>/i&#39;, $html, $titleArr); $title = $titleArr[&#39;...
    1、获取页面标题

    //提取标题
                preg_match('/<title>(?<title>.*?)<\/title>/i', $html, $titleArr);
                $title = $titleArr['title'];
    2、获取body主体内容,并将背景图片提取出来替换成其他图片地址

    /**
    * 获取BODY主体区域内容
    * @param $html
    * @param $urlRoot
    * @return mixed
    */
    function getBody($html,$urlRoot = null){
        //提取BODY主体
        preg_match('/<!--body-->(.*?)<!--body-->/is ', $html, $bodyArr);
        if(!$bodyArr){
            preg_match('/<body.*?>(.*?)<\/body>/is ', $html, $bodyArr);
        }
        $body = $bodyArr[1];
        //替换img文件
        $body =  preg_replace('/(<[img|IMG].*src=[\'|"])(\.\.\/)*(img.[^\'||^"]+)/',"$1$urlRoot$3",$body);
        //替换html文件内的css背景图片
        $body =  preg_replace('~\b(background(-image)?\s*:(.*?)\(\s*[\'|"]?)(\.\.\/)*(img.*?)?\s*\)~i',"$1$urlRoot$5)",$body);
        return $body;
    }
    3、提取页面Description内容

    function getDescription($html){
        // Get the 'content' attribute value in a <meta name="description" ... />
        $matches = array();

        // Search for <meta name="description" content="Buy my stuff" />
        preg_match('/<meta.*?name=("|\')description("|\').*?content=("|\')(.*?)("|\')/i', $html, $matches);
        if (count($matches) > 4) {
            return trim($matches[4]);
        }

        // Order of attributes could be swapped around: <meta content="Buy my stuff" name="description" />
        preg_match('/<meta.*?content=("|\')(.*?)("|\').*?name=("|\')description("|\')/i', $html, $matches);
        if (count($matches) > 2) {
            return trim($matches[2]);
        }

        // No match
        return null;
    }
    4、替换css文件的背景图片地址

    /**
    * 获取CSS内容
    * @param $cssCnt
    * @param $urlRoot
    * @return mixed
    */
    function getCss($cssCnt,$urlRoot =null){
        //匹配包含 img文件夹的相对路径图片 (含义绝对路径的不包含在其中)
        //匹配替换不一定准确,因为只是将 含义 ../ 的地址转为url 而没有考虑 ../../ 之类的层级关系
        $css =  preg_replace('~\b(background(-image)?\s*:(.*?)\(\s*[\'|"]?)(\.\.\/)*(img.*?)?\s*\)~i',"$1$urlRoot$5)",$cssCnt);
        //添加css前缀
        $css =  preg_replace('/\b.(.*?)[,|{]/',"pat .$0",$cssCnt);
        //TODO 压缩css
        return $css;
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-10-2718-1.html
    相关热词搜索: