解决方案 »

  1.   

    先匹配。再拼装结果。
    $s=<<< TXT<table width="96%"border="0" align="center" cellpadding="4" cellspacing="0">        <tr   onMouseOver="this.style.backgroundColor='#EAEAEA'; return true;" onMouseOut="this.style.backgroundColor='transparent';">
              <td><a href="news_detail.php?infoId=141" class="link">新闻一</a></td>
              <td align="right" class="newstime">2014-03-12</td>
            </tr>        <tr   onMouseOver="this.style.backgroundColor='#EAEAEA'; return true;" onMouseOut="this.style.backgroundColor='transparent';">
              <td><a href="news_detail.php?infoId=140" class="link">新闻二</a></td>
              <td align="right" class="newstime">2014-02-20</td>
            </tr>
    </table>
    TXT;
     preg_match_all('#<tr[^>]+>\s*<td><a[^>]+>(.+?)</a></td>\s*<td[^>]+>(.+?)<#s',$s,$m);$html="<ul data-role=\"listview\"  >\n";
    foreach($m[1] as $k=>$v) $html .= "<li><a href=\"#\">$v {$m[2][$k]}</a></li>\n";
    $html .= '</ul>';
    echo $html;
      

  2.   


    非常感谢版主的回答
    测试了一下,果然是有效果的。不过我还想 超链接那一段能够有具体地址,形如:<ul data-role="listview"  >
        <li><a href="news_detail.php?infoId=141">新闻一 2014-03-12</a></li>
        <li><a href="news_detail.php?infoId=140">新闻二 2014-02-20</a></li>
      
    </ul
    版主高手啊,正则 还有 FOREACH能不能大概给个解释,谢谢啊。
      

  3.   

     preg_match_all('#<tr[^>]+>\s*<td><a\s*href="(.+?)"[^>]+>(.+?)</a></td>\s*<td[^>]+>(.+?)<#s',$s,$m);$html="<ul data-role=\"listview\"  >\n";
    foreach($m[1] as $k=>$v) $html .= "<li><a href=\"$v\">{$m[2][$k]} {$m[3][$k]}</a></li>\n";
    $html .= '</ul>';
    echo $html;