请教一个正则问题这么写问什么匹配不对
<?php
$str = file_get_contents("http://mil.news.sina.com.cn");
// 军情热点
$reg = '#【军情热点】.*<a.*href="(.*).*>(.*)</a>"#iUs';
preg_match_all($reg,$str,$m);
echo "<pre>";
print_r($m);
?>
请教一下 匹配一下链接和标题 这么写为什么不对
[解决办法]
$str = file_get_contents("http://mil.news.sina.com.cn");Array
// 军情热点
$reg = '#【军情热点】.+?href=(\S+)#is';
preg_match_all($reg,$str,$m);
print_r($m);
(
[0] => Array
(
[0] => 【军情热点】</font></a><a href=http://blog.sina.com.cn/s/blog_69710d610101fglf.html?tj=1
)
[1] => Array
(
[0] => http://blog.sina.com.cn/s/blog_69710d610101fglf.html?tj=1
)
)
[解决办法]
它的连接不包括引号
$reg = '#(?<=【军情热点】).*<a.+href=(.+)\s*target=\_blank>(.+)</a>(?=名家专栏)#isU';
[解决办法]
$s_html = file_get_contents("http://mil.news.sina.com.cn");
$s_html = iconv('gbk', 'utf-8', $s_html);
$s_gd_reg = '#【军情热点】(.*)</ul>#iUs';
$a_gd_match = array();
preg_match_all($s_gd_reg, $s_html, $a_gd_match);
$s_news = $a_gd_match[1][0];
$s_news_reg = '#<a\s+href=(.*)\s+.*>(?:<font color=red>)?([^<>]*)(?:</font>)?</a>#iUs';
$a_news_match = array();
preg_match_all($s_news_reg, $s_news, $a_news_match);
print_r($a_news_match);
用了一种比较笨的方法。。