$str='1 A内容ZA 2 A内容ZA 3';
echo preg_replace('/A.*ZA/i','',$str);
exit();
兄弟们,我上面的正则想把 A至AZ之间的内容替换掉,剩下 1 2 3。这个正则如何写呢?上面的例子,只是我做的一个小例子,用来说明我想要实现的功能。实际上我是在HTML文档中做替换的,要把我自定义的代码块替换掉,求解。如
<!--BLOCK1-->
内容
<!--BLOCK1-->其它内容<!--BLOCK1-->
内容
<!--BLOCK1-->
如果用我上面的方法,直接从第一个标签干到最后一个,中间的其它内容全没了,能不能不没啊。求高手

解决方案 »

  1.   

    补充:HTML的标签是不能更改的,是原有的。求正则哥。
      

  2.   

    echo preg_replace('/A.*?ZA/i','',$str); 
      

  3.   

    哎,兄弟你已经对了99%了,加个防贪婪就可以了
    echo preg_replace('/A.*ZA/iU','',$str);这样就OK了
      

  4.   

    楼上的或者 在/i后面加修正符U,就是/iU,注意是大写,和楼上一样,指的是用非贪婪方式,就是匹配到第一个za出现就结束;正则默认是贪婪方式,是匹配到最后一个za结束的
      

  5.   

    @light86 @snmr_com  @jordan102好用了,谢谢兄弟。们。
    看来我对正则表达式基础知识十分匮乏,导致了这样一种99%只差1点就成功的情况啊,失败和成功的区别哇,就是1点的差距。悲哀啊。。55555
    请问找一本正则专业书籍是不是有助于我的提高啊,我想成为正则高手。谢谢兄弟们了。有没经验心得交流一下哇。