更换后,php preg替换丢失了一些内容

时间:2013-09-06 07:23:13

标签: php

下面是我的字符串。这里我使用preg_replace

$marr = '<ul><li class="test_item test-item-28 current_test_item">'.
        '<a href="test/">Home</a></li><li class="test_item test-item-30">'.
        '<a href="test/about-us/">About Us</a></li>'.
        '<li class="test_item test-item-45"><a href="test/products/">Products</a></li>'.
        '<li class="test_item test-item-47"><a href="test/latest-news/">Latest News</a></li>'.
        '<li class="test_item test-item-49"><a href="test/contact-us/">Contact Us</a></li>'.
        '</ul>';

echo preg_replace('/<li class="test_item test-item-45">(.*)<\/li>/',
                  'test',
                  $marr);

使用它时,它会替换给定的字符串。但缺少最新的新闻和联系菜单。在输出中,最后2个李丢失了。这有什么不对?

请帮帮我。感谢

1 个答案:

答案 0 :(得分:1)

您应该使用(.*?)

echo preg_replace('/<li class="test_item test-item-45">(.*?)<\/li>/', 'test', $marr);

为了在第一个</li>发生后中断匹配