<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>请问下怎么让正则匹配这段代码的第一个<li>标签和最后一个</li>标签我用这个
$str = preg_replace("/<li>(.+?)<\/li>/is",'<ul><li>\\1<li></ul>',$str);
就直接变成
<ul><li><b>1</b></li></ul>
<ul><li><b>2</b></li></ul>
<ul><li><b>3</b></li></ul>
<ul><li><b>4</b></li></ul>
<ul><li><b>5</b></li></ul>求高人指教呀~~~

解决方案 »

  1.   

    $html = <<<html
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    html;
    preg_match('/^(<li>\d+<\/li>).*(<li>\d+<\/li>)$/is', $html, $arr);
    echo $arr[1], $arr[2];//<li>1</li><li>5</li>
      

  2.   

    没有描述清楚,你是想匹配出来还是替换。还有第一个<li>标签和最后一个</li>标签是什么意思,是指中间的内容吗?
      

  3.   


    我想在匹配这段内容然后在头尾加上<ul></ul>标签~
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
      

  4.   

    preg_match('/<li>.*<\/li>/is', $html, $arr);
    echo '<ul>' . $arr[0] . '</ul>';
      

  5.   


    $str= <<<HTML
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    HTML;
    echo preg_replace('/(.+)/is','<ul>$1</ul>',$str);
      

  6.   

    $s = <<< TXT
    <p>begin</p>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <p>end></p>
    TXT;
    echo preg_replace('#<li.+/li>#is', '<ul>$0</ul>', $s);
    <p>begin</p>
    <ul><li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li></ul>
    <p>end></p>