我想把 php的/*  */这种注释,用正则去掉。
我的写法是$pattern= '/\/\*(\s|.)*?\*\//';这个正则在费咨询 ,当,量大的时候,容易出现内存溢出。请问什么好的办法吗?
这个正则应该如何改进?

解决方案 »

  1.   

    $str = preg_replace("/\/\*.*?\*\//s", '', $str);
      

  2.   

    /s   表示“.”匹配所有字符包括换行符如果没有/s 就只能匹配一行。
    有了/s就可以匹配/* */之间的多行字符。
      

  3.   

    /i 忽略大小写
    /e
    /t
    /u “.*”是贪婪模式
    “.*?”是非贪婪模式
      

  4.   

    php命令行有个参数可以过滤掉php程序里注释空格等内容自己过滤需要考虑语法分析,比如字符串里的'/* */',
      

  5.   

    $str = preg_replace("/\/\*.*?\*\//s", '', $str);
    这个方法不就把注释里的代码也清除了吗?如果要保留其中的代码呢?
      

  6.   

    $str = preg_replace('/(\/\*)|(\*\/)/','',$str);
      

  7.   

    也可以这样
    $arr = array('/*','*/');
    $str = str_replace($arr,'',$str);
      

  8.   

    既然是注释,里面为什么会有代码?/* comment */ echo 'orz'; /* comment */将被替换为echo 'orz';这也是.*?中问号的作用。
      

  9.   

    /后的模式修正符有超过10个,而且大小写作用不同,参看手册pcre模式修正符一节
      

  10.   

    说点题外话
    PHP去除注释类