文件 test.htm
内容
<!--{list}--><!--{/list}--><!--{moban}-->
<a href="{url}">{test}</a>
<!--{/moban}-->用PHP读这个文件,匹配<!--{list}-->或者<!--{moban}-->的内容该怎么写?  求大神帮忙看下<?php
$filename = "test.htm";
$handle = fopen ($filename,"a+");
$str = fread($handle,filesize($filename));
preg_match('/表达式实在会写了.../', $str, $moban);
print_r($moban);
?>

解决方案 »

  1.   

    $html = <<<html
    <!--{list}-->
    a
    <!--{/list}--><!--{moban}-->
    b
    <!--{/moban}-->
    html;$rule = '/<\!--{list}-->(.*)<\!--{\/list}-->|<\!--{moban}-->(.*)<\!--{\/moban}-->/is';
    preg_match_all($rule, $html, $arr);
    echo '<pre>';print_r($arr[0]);
    /*
    Array
    (
        [0] => 
    a    [1] => 
    b)
    */
      

  2.   

    $html = <<<html
    <!--{list}-->
    a
    <!--{/list}--><!--{moban}-->
    b
    <!--{/moban}-->
    html;
    $rule = '/<!--{(\w+)}-->(.*)<!--{\/\1}-->/is';
    preg_match_all($rule, $html, $arr);
    echo '<pre>';print_r($arr[0]);
    /*
    Array
    (
        [0] => 
    a    [1] => 
    b)
    */
      

  3.   


    $str = <<<TEXT
    <!--{list}-->
    <strong>test list</strong>
    <!--{/list}--><!--{moban}-->
    <a href="{url}">{test}</a>
    <!--{/moban}-->TEXT;preg_match_all('/<!--\{(list|moban)\}-->([\d\D]*)<!--\{\/\1\}-->/U',$str, $matches);
    print_r($matches[2]);
    /*
    输出结果:
    Array
    (
        [0] => 
    <strong>test list</strong>    [1] => 
    <a href="{url}">{test}</a>)*/