澳门新葡萄京官网注册php 正则表达式 取标题,关键词,内容代码

采集在现在的cms中都常常用到哦,下面我们就来看看关于php 正则表达式
取标题,关键词,内容代码源码哦。

//获取标题
  $inarr = array();
  preg_match(“/<title>(.*)</title>/isU”,$body,$inarr);
  if(isset($inarr[1]))
  {
   $redatas[‘title’] = $inarr[1];
  }

例子代码如下,可常用于采集哦、

//获取标题$inarr =
array();preg_match(/title(.*)/title/isU,$body,$inarr);if(isset($inarr[1])){$redatas[‘title’]
= $inarr[1];}

  //获取关键词
  $inarr = array();
  preg_match(“/<meta[s]+name=[‘”]keywords[‘”]
content=[‘”](.*)[‘”]/isU”,$body,$inarr);
  if(isset($inarr[1]))
  {
   $redatas[‘keywords’] = cn_substr(html2text($inarr[1]),30);
  }

 代码如下

//获取关键词$inarr =
array();preg_match(/meta[s]+name=[‘]keywords[‘]
content=[‘](.*)[‘]/isU,$body,$inarr);if(isset($inarr[1])){$redatas[‘keywords’]
= cn_substr(html2text($inarr[1]),30);}

  //获取摘要
  $inarr = array();
  preg_match(“/<meta[s]+name=[‘”]description[‘”]
content=[‘”](.*澳门新葡萄京官网注册,)[‘”]/isU”,$body,$inarr);
  if(isset($inarr[1]))
  {
   $redatas[‘description’] =
cn_substr(html2text($inarr[1]),$cfg_auot_description);
  }

1、获取页面标题

//获取摘要$inarr =
array();preg_match(/meta[s]+name=[‘]description[‘]
content=[‘](.*)[‘]/isU,$body,$inarr);if(isset($inarr[1])){$redatas[‘description’]
= cn_substr(html2text($inarr[1]),$cfg_auot_description);}

  //获取内容
  if($s!=” && $e!=”)
  {
   $redatas[‘body’] = GetHtmlAreaA($s,$e,$body);
   if($redatas[‘body’]!=” && $redatas[‘description’]==”)
   {
    $redatas[‘description’] =
cn_substr(html2text($redatas[‘body’]),$GLOBALS[‘cfg_auot_description’]);
   }
  }
 }
 return $redatas;

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

//获取内容if($s!=” $e!=”){$redatas[‘body’] =
GetHtmlAreaA($s,$e,$body);if($redatas[‘body’]!=”
$redatas[‘description’]==”){$redatas[‘description’] =
cn_substr(html2text($redatas[‘body’]),$GLOBALS[‘cfg_auot_description’]);}}}return
$redatas;

/**
 * 获取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;
}

 

从上面例子来看其实都是非常的简单就是批有规律的标签为开始与结束节点,这样我们可以获取这两个字符之类的内容也就是我们要提取的内容了哦,只是在中间有字符或空格的一些处理了哦。

发表评论

电子邮件地址不会被公开。 必填项已用*标注