内容如下:{{foreach sql="select * from z_news order by newsid desc limit 0,10"}}
  <tr>
  <td>{{NewsID}}</td>
  <td>{{Title}}</td>
  </tr>
{{/foreach}}我现在想取:  <tr>
  <td>{{NewsID}}</td>
  <td>{{Title}}</td>
  </tr>请问如何实现?谢谢!就这么点分了。

解决方案 »

  1.   

    用PHP的preg_match_all函数替换怎么写?谢谢!!
      

  2.   

    1楼大哥已经写好了啊
    $input = '{{foreach sql="select * from z_news order by newsid desc limit 0,10"}}
      <tr>
      <td>{{NewsID}}</td>
      <td>{{Title}}</td>
      </tr>
    {{/foreach}}
    ';
    preg_match('/<[\s\S]+>/', $input, $match);
    $output = $match[0];  
      

  3.   

    提供一个笨法:   preg_match_all('/<td>{{\w+}}<\/td>|<\/?tr>/',$str,$array);   var_dump($array)
      

  4.   


    preg_match_all "<[\\s\\S]+>", "要正则匹配的字符串", $out, PREG_PATTERN_ORDER);
    print_r($out);
      

  5.   

    你们理解错了,我页面里面可能有N多个这段字符串,而里面的<tr><td>也可能是<div><ul><li>之类的HTML标记。
      

  6.   

    你直接贴出来一段html   再贴一段你想要的结果!!!
      

  7.   

    PHP code
    preg_match_all "<[\\s\\S]+>", "要正则匹配的字符串", $out, PREG_PATTERN_ORDER);
    print_r($out);
      

  8.   

    我有一事不明,为何只会match到
    <tr>
      <td>{{NewsID}}</td>
      <td>{{Title}}</td>
      </tr>而不match到<tr>或者<td>
      

  9.   

    而且,假如楼主的代码是:
    {{foreach sql="select * from z_news order by newsid desc limit 0,10"}}
      <tr>
      <td>{{NewsID}}</td>
      <td>{{Title}}</td>
      </tr>
    {{/foreach}}
    {{foreach sql="select * from z_news order by newsid desc limit 0,10"}}
      <tr>
      <td>{{NewsID}}</td>
      <td>{{Title}}</td>
      </tr>
    {{/foreach}}那么将会被match的字符会是:<tr>
      <td>{{NewsID}}</td>
      <td>{{Title}}</td>
      </tr>
    {{/foreach}}
    {{foreach sql="select * from z_news order by newsid desc limit 0,10"}}
      <tr>
      <td>{{NewsID}}</td>
      <td>{{Title}}</td>
      </tr>
      

  10.   

    $data="{{foreach sql='select * from z_news order by newsid desc limit 0,10'}}".
      '<tr>'.
      '<td>{{NewsID}}</td>'.
      '<td>{{Title}}</td>'.
      '<td>{{123}}</td>'.
      '<div>{{454545}}</div>'.
      '</tr>'.
    '{{/foreach}}' ;
       preg_match_all('/<\w+>{{\w+}}<\/\w+>|<\/?\w+>/',$data,$array);
       var_dump($array);
    ------------------------
    /*
     array(6) {
      [0]=>
      string(4) "<tr>"
      [1]=>
      string(19) "<td>{{NewsID}}</td>"
      [2]=>
      string(18) "<td>{{Title}}</td>"
      [3]=>
      string(16) "<td>{{123}}</td>"
      [4]=>
      string(21) "<div>{{454545}}</div>"
      [5]=>
      string(5) "</tr>"
    }*/
      

  11.   

    $str = <<<str
    {{foreach sql="select * from z_news order by newsid desc limit 0,10"}} 
    <tr> 
    <td>{{NewsID}}</td> 
    <td>{{Title}}</td> </tr> 
    {{/foreach}} 
    {{foreach sql="select * from z_news order by newsid desc limit 0,10"}} 
    <tr> 
    <td>{{NewsID}}</td> 
    <td>{{Title}}</td> 
    </tr> 
    {{/foreach}}str;preg_match_all('#\{\{foreach((?:(?!\}\}).)*)\}\}(.*?)\{\{/foreach\}\}#is',$str,$m);
    echo "<pre/>";
    print_r(array_map('htmlspecialchars',$m[2]));