日期:2014-05-17  浏览次数:20440 次

正则表达式匹配
想用正则表达式匹配这种格式
<LI><A href="http://news.17173.com/" target=_blank>新闻中心</A> 


<?php


  
$con= file_get_contents("http://17173.com");
  
$preg = '#<LI><A href="(.*)" target="_blank">(.*)</A>#';
  
preg_match_all($preg, $con, $arr); 
  
//print_r($arr[1]);
  
foreach($arr[1] as $id=>$v){
  
  echo "<a href=$v>".$v."</a> ".$arr[2][$id]."<br>";
    
}
  
?>



匹配结果是没东西,但是这个页面中是有这种格式链接的,求解

------解决方案--------------------
首先 target="_blank"和上面给出的是不符合的,到底是哪个?

然后再echo $con;看看

确定有期望的内容
再注意大小写和换行的问题——你的正则固定了大小写,圆点是不包含换行的
------解决方案--------------------
preg_match_all('/<li><a.*?>(.*?)<\/a>/i', $str, $matches);
var_dump($matches[1]);

你的问题是:人家网站的内容是target=_blank这样的,而你的target="_blank"却是这个,多了引号,匹配不到。