$text=preg_replace("/\[h1\](.+?)\[\/h1]/is","<h1>\\1</h1>",$text);

解决方案 »

  1.   

    替换[h1]...[/h1]为<h1>...</h1>,忽略大小写。
    ...的内容必须有
      

  2.   

    \[h1\](.+?)\[\/h1]/is:\[:代表[
    h1:代表h1
    (.+?):其中.代表任何字符;+代表1到无穷个;?表示非貪婪模式,也就是说至少要有。
    /i表示忽略大小写
    /s:这应该是perl特有的,暂时不知道,查查先
      

  3.   

    这个问题我也正在烦,正则表达式实在太麻烦了,我最近为自己的论坛增加 等html自动转换的的功能,搞了很久,因为不能匹配中文,一直没搞定,请问楼顶的程序的](.+?)\能匹配所以中文吗?
      

  4.   

    i (PCRE_CASELESS) 表示忽略大小写匹配+,*,?等后的?表示贪婪和非贪婪的切换
    如果不加U(PCRE_UNGREEDY)默认为贪婪匹配(最大匹配)
    即匹配尽可能多的字符,切换后就变成非贪婪匹配(最小匹配)加了s (PCRE_DOTALL)表示.也包含了换行符