做抓取信息 ,文章链接,出处,作者,时间,还有要抓取文章内容
如:http://www.bjxch.gov.cn/pub/xch_zhuzhan/xwzhx/A3_10/index.html
链接和标题都抓取了,但链接的内容怎么抓不到
就说其中的一个链接内容吧
链接是:http://www.bjxch.gov.cn/pub/xch_zhuzhan/xwzhx/A3_10/201005/t20100510_1158339.html
我把提取内容的规则写成:"/(<\/style>.*<\/td>)/i"
却提不出内容,整篇文章只有一个</style>,这么写怎么不对哦,想直接用正则表达中文,又不会
如:http://www.bjxch.gov.cn/pub/xch_zhuzhan/xwzhx/A3_10/index.html
链接和标题都抓取了,但链接的内容怎么抓不到
就说其中的一个链接内容吧
链接是:http://www.bjxch.gov.cn/pub/xch_zhuzhan/xwzhx/A3_10/201005/t20100510_1158339.html
我把提取内容的规则写成:"/(<\/style>.*<\/td>)/i"
却提不出内容,整篇文章只有一个</style>,这么写怎么不对哦,想直接用正则表达中文,又不会
匹配不出来的主要问题是网页源码是分行的,你程序里的匹配只是单行匹配,所以没有结果
应该在后面加上选项sm
另外用.*默认是贪婪匹配,会找到最后一个<\td>的,而不是正文后面的那个
如果你确认正文中不会出现</td>,应该改为非贪婪匹配,即加一个?
最终可能是这个
"/(<\/style>.*?<\/td>)/ism"
$str = file_get_contents('http://www.bjxch.gov.cn/pub/xch_zhuzhan/xwzhx/A3_10/201005/t20100510_1158339.html');
preg_match("/[\s\S]*<\/style>([\s\S]*?)<\/td>[\s\S]*?/i", $str, $match);
var_dump($match);
$str = <<< HTML
DIV.union TD {
FONT-SIZE: 14px; LINE-HEIGHT: 18px
}</style>
昨天,西城区少工委在育翔小学举行“爱心手拉手,书香传友谊”捐建“红领巾好少年书屋”活动。该区2.6万名少先队员将在一周内捐出15万册图书,并于“六一”儿童节前送往青海玉树灾区小伙伴手中。 </td>
</tr>
</table>
HTML;
preg_match('#</style>(.+)</td>#is',$str,$m);
var_dump($m[1]);
?>