Heim > Backend-Entwicklung > PHP-Tutorial > 请教一个正则问题这么写问什么匹配不对

请教一个正则问题这么写问什么匹配不对

WBOY
Freigeben: 2016-06-23 14:18:39
Original
973 Leute haben es durchsucht

<?php    $str = file_get_contents("http://mil.news.sina.com.cn");	// 军情热点    $reg = '#【军情热点】.*<a.*href="(.*).*>(.*)</a>"#iUs';	preg_match_all($reg,$str,$m);	echo "<pre class="brush:php;toolbar:false">";	print_r($m);?>
Nach dem Login kopieren


请教一下 匹配一下链接和标题 这么写为什么不对


回复讨论(解决方案)

查看源码去看看哪里有区别

他的编码是 gb2312 的,你的呢?

他的编码是 gb2312 的,你的呢?

我把php的编码也改成了gb2312的 匹配结果Array
(
[0] => Array
(
)

[1] => Array
(
)

[2] => Array
(
)

)

也是空,匹配不到军情热点的所有新闻

请大家帮帮忙

$str = file_get_contents("http://mil.news.sina.com.cn");// 军情热点$reg = '#【军情热点】.+?href=(\S+)#is';preg_match_all($reg,$str,$m);print_r($m);
Nach dem Login kopieren
Nach dem Login kopieren
Array
(
[0] => Array
(
[0] => 【军情热点】 )

[1] => Array
(
[0] => http://blog.sina.com.cn/s/blog_69710d610101fglf.html?tj=1
)

)

$str = file_get_contents("http://mil.news.sina.com.cn");// 军情热点$reg = '#【军情热点】.+?href=(\S+)#is';preg_match_all($reg,$str,$m);print_r($m);
Nach dem Login kopieren
Nach dem Login kopieren
Array
(
[0] => Array
(
[0] => 【军情热点】
)

[1] => Array
(
[0] => http://blog.sina.com.cn/s/blog_69710d610101fglf.html?tj=1
)

)

在麻烦版主一下,我想匹配的是 从军情热点开始之后的10多条新闻,但是这样写貌似只匹配了一条,我最开始的那个正则可能就错了,

<?php$str = file_get_contents("http://mil.news.sina.com.cn"); $reg = '#(?<=【军情热点】).*<a.+href="(.+)".+>(.+)</a>(?=名家专栏)#isU'; preg_match_all($reg,$str,$m); echo "<pre class="brush:php;toolbar:false">";print_r($m); ?>
Nach dem Login kopieren
Nach dem Login kopieren


我试着这样写了一下 也不对呢 请大家帮忙看一下

<?php$str = file_get_contents("http://mil.news.sina.com.cn"); $reg = '#(?<=【军情热点】).*<a.+href="(.+)".+>(.+)</a>(?=名家专栏)#isU'; preg_match_all($reg,$str,$m); echo "<pre class="brush:php;toolbar:false">";print_r($m); ?>
Nach dem Login kopieren
Nach dem Login kopieren


我试着这样写了一下 也不对呢 请大家帮忙看一下
它的连接不包括引号
$reg = '#(?<=【军情热点】).*(.+)
(?=名家专栏)#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);
Nach dem Login kopieren


用了一种比较笨的方法。。

谢谢大家的帮忙

有没有一种方法可以写一次正则,就匹配出所有的新闻呢

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage