Heim  >  Artikel  >  Backend-Entwicklung  >  <tr><td>测试</td><tr>想替换为<LI>测试</LI>求PHP 正则替换,谢谢。

<tr><td>测试</td><tr>想替换为<LI>测试</LI>求PHP 正则替换,谢谢。

WBOY
WBOYOriginal
2016-06-23 14:00:441115Durchsuche

如题:

测试 想替换为
  • 测试
  • 求PHP 正则替换,谢谢。

    因为我的HTML代码如下:
    <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>


    想替换成
    <ul data-role="listview"  >    <li><a href="#">新闻一 2014-03-12</a></li>    <li><a href="#">新闻二 2014-02-20</a></li> </ul>



    回复讨论(解决方案)

    先匹配。再拼装结果。

    $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('#]+>\s*]+>(.+?)\s*]+>(.+?)<#s',$s,$m);$html="';echo $html;

    用str_replace要好一点吧 

    先匹配。再拼装结果。

    $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('#]+>\s*]+>(.+?)\s*]+>(.+?)<#s',$s,$m);$html="';echo $html;


    非常感谢版主的回答
    测试了一下,果然是有效果的。

    不过我还想 超链接那一段能够有具体地址,形如:
    <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能不能大概给个解释,谢谢啊。

    高手,分不够还可以再加~~~~
    谢谢。

     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;

    版主非常强大啊~~~
    赞一个~
    结贴,哈。

    Stellungnahme:
    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