希望的结果应该是:part 2: 2008年能效标识大考 民族家电大胜外资品牌 
part 2: QQ 18:14 
part 2: 湘电股份:能源合作 战略眼光看风电 
part 2: 证券之星 17:12 为什么不是这样的呢?仅仅是换了实例中的字符串而已。

解决方案 »

  1.   

    改为
    preg_match_all("/( <([\w]+)[^>]*>)([^\S\s]+)( <\/\\2>)/", $html, $matches, PREG_SET_ORDER); 
    就可以了.因为你的代码中有换行,而又是用的贪婪匹配方法,所以就会匹配到最后一个</a>
    如果还是不行,可以查一下有关贪婪匹配的相关知识.
      

  2.   

    如果没有换行就用下面的勉强匹配方法.
    preg_match_all("/( <([\w]+)[^>]*>)(.*?)( <\/\\2>)/", $html, $matches, PREG_SET_ORDER);