很多站长朋友们都不太清楚php正则网页内容,今天小编就来给大家整理php正则网页内容,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php 正则提取网页中指定的信息并且整理成想要的格式 2、 PHP如何正则表达式提取网页内容 3、 php 用正则表达式提取网页内容 4、 php 正则表达式 匹配网站内容 5、 PHP正则获取整个页面标签里面的内容 php 正则提取网页中指定的信息并且整理成想要的格式<?php
$Table = '<table border="1" bordercolor="#666666" style="BORDER-COLLAPSE:collapse" cellspacing="0" class=tableborder> <tr class="color-header"> <td width="100" align="center" nowrap>课程性质</td> <td width="100" align="center" nowrap>课程号</td> <td width="150" align="center" nowrap>课程名称</td> <td width="80" align="center" nowrap>考试类型</td> <td width="40" align="center" nowrap>学时</td> <td width="40" align="center" nowrap>学分</td> <td width="80" align="center" nowrap>成绩类型</td> <td width="60" align="center" nowrap>期末成绩</td> <td width="60" align="center" nowrap>总评成绩</td> </tr> <tr class="color-row"> <td nowrap> 专业核心课</td> <td align="center" nowrap>1091123</td> <td nowrap> 软件工程</td> <td nowrap> 考试</td> <td align="right" nowrap>51 </td> <td align="right" nowrap>2.5 </td> <td nowrap> 期末考试</td> <td align="right" nowrap>89 </td> <td align="right" nowrap>95 </td> </tr> <tr class="color-row"> <td nowrap> 学科基础课</td> <td align="center" nowrap>1091134</td> <td nowrap> C++程序设计</td> <td nowrap> 考试</td> <td align="right" nowrap>51 </td> <td align="right" nowrap>2.5 </td> <td nowrap> 期末考试</td> <td align="right" nowrap>87 </td> <td align="right" nowrap>86 </td> </tr> </table>'; //你所谓的部分网页源内容, 我这里是赋值给一个变量, 实际中, 你怎么来, 你自己写
/*过滤下多余的换行和空格*/
$Table = preg_replace('/\s{2,}/', '', $Table);
/*正则提取出每一行先*/
preg_match_all('/<tr\s+class="color\-row">(([\s\S](?<!<\/tr>))*)<\/tr>/is', $Table, $Tr);
/*得到每一行(也就是每一个科目的成绩的一个数组), 数组值是td单元格html代码, 还不行, 还需要进一步匹配数据*/
$ChengJiArray = $Tr[1];
/*设置一个变量, 用于储存总共有多少学科, 初始赋值一个空数组*/
$XueKeArray = array();
/*遍历匹配出来的表格行数组*/
foreach( $ChengJiArray as $Value ) {
preg_match_all('/<td[^>]*>([^<]*)<\/td>/is', $Value, $Td); //匹配每个单元格中的数据
$Data = $Td[1]; //等到数据集合
/*构建一个记录各个项目的数组*/
$XiangMuArray = array( 'name' => $Data[2], 'type' => $Data[6], 'fenshu' => $Data[7], 'zongfenshu' => $Data[8]);
/*给最后的学科数组赋值*/
$XueKeArray[] = $XiangMuArray;
}
/*清空不需要的变量和数组*/
unset( $Table, $Tr, $ChengJiArray, $Value, $Td, $Data, $XiangMuArray );
/*最后打印一下结果数组用于测试, 具体应用你自己写*/
print_r( $XueKeArray );
运行结果截图:
PHP如何正则表达式提取网页内容如果你要<div class="nav" monkey="nav">和<div class="head-ad">之间的所有源码,用 preg_match 就可以,不用preg_match_all ,如果你要里面的所有的 <li></li>标签中的内容,可以用preg_match_all
//提取所有代码
$pattern = '/<div class="nav" monkey="nav">(.+?)<div class="head-ad">/is';
preg_match($pattern, $string, $match);
//$match[0] 即为<div class="nav" monkey="nav">和<div class="head-ad">之间的所有源码
echo $match[0];
//然后再提取<li></li>之间的内容
$pattern = '/<li.*?>(.+?)<\/li>/is';
preg_match_all($pattern, $match[0], $results);
$new_arr=array_unique($results[0]);
foreach($new_arr as $kkk){
echo $kkk;
}
php 用正则表达式提取网页内容$str = '<li class="blackArea" data-sourcelatest-elem="item" data-tvid="694641300" data-vid="7b0b59d2ef0cb1152368ca9be9a4ae76" data-idx="4" data-sourcelatest-month="" data-delegate="videoPlayList">
<p class="video_position video_rb"><span class="v_name" rseat="xj_ty3">第2017-06-08期</span></p>
<h3> <a title="微体兔新版馋嘴小面" href="javascript:void(0);" rseat="xj_vn3">微体兔新版馋嘴小面</a> </h3>
</li>';
$pattern = "/[\s\S]*<li[^>]+data-tvid[=\"\']+([^\"\']*)[\"\'][^>]*data-vid[=\"\']+([^\"\']*)[\"\'][\s\S]*/i";
$tvid = preg_replace($pattern, "$1", $str);
$vid = preg_replace($pattern, "$2", $str);
$reg = "/[\s\S]*<p[^>]*>((?:(?!<\/p>)[\s\S])*)<\/p>[\s\S]*/i";
$p = preg_replace($reg, "$1", $str);
$reg = "/[\s\S]*<h3[^>]*>((?:(?!<\/h3>)[\s\S])*)<\/h3>[\s\S]*/i";
$h3 = preg_replace($reg, "$1", $str);
echo $tvid."\n".$vid."\n".$p."\n".$h3;
php 正则表达式 匹配网站内容<div
class="nav"
monkey="nav">和<div
class="head-ad">之间的所有源码,用
preg_match
就可以,不用preg_match_all
,如果你要里面的所有的
<li></li>标签中的内容,可以用preg_match_all
//提取所有代码
$pattern
=
'/<div
class="nav"
monkey="nav">(.+?)<div
class="head-ad">/is';
preg_match($pattern,
$string,
$match);
//$match[0]
即为<div
class="nav"
monkey="nav">和<div
class="head-ad">之间的所有源码
echo
$match[0];
//然后再提取<li></li>之间的内容
$pattern
=
'/<li.*?>(.+?)<\/li>/is';
preg_match_all($pattern,
$match[0],
$results);
$new_arr=array_unique($results[0]);
foreach($new_arr
as
$kkk){
echo
$kkk;
}
PHP正则获取整个页面标签里面的内容htmlspecialchars是将html转码,防止XSS攻击的。你这样没有意义。
CURL获取内容后直接 preg_match_all('/<p>(.*?)<\/p>/');就可以了
还有不懂的可以追问
关于php正则网页内容的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php正则网页内容 php正则表达式匹配字符串的详细内容...