例如有一段文字:
ParametersEasyFileHandle 
[in] InitEasyFileClient函数返回的句柄filehandle 
[in] 打开的文件句柄pBuffer 
[in] 指向要写入的缓存nNumberOfBytesToWrite 
[in] 指定要写入的字节数lpNumberOfBytesWritten 
[out] 返回多少个字节成功写入想把所有符合变量规则的字串替换掉
我使用preg_replace("/^[a-zA-Z_][a-zA-Z0-9_]*/","",$pagecontent);
不行

解决方案 »

  1.   

    规则没错是:以字母或者下划线开头,由字母数字下划线组成的串. 就是刚开始例如的那一段就不行
    EasyFileHandle 
    [in] InitEasyFileClient函数返回的句柄filehandle 
    [in] 打开的文件句柄pBuffer 
    [in] 指向要写入的缓存nNumberOfBytesToWrite 
    [in] 指定要写入的字节数lpNumberOfBytesWritten 
    [out] 返回多少个字节成功写入谢谢!
      

  2.   

    原始字符串:
    EasyFileHandle 
    InitEasyFileClient函数返回的句柄 filehandle 
    打开的文件句柄 pBuffer 
    指向要写入的缓存 nNumberOfBytesToWrite 
    指定要写入的字节数 lpNumberOfBytesWritten 
    返回多少个字节成功写入替换后的字符串:
    函数返回的句柄 
    打开的文件句柄  
    指向要写入的缓存  
    指定要写入的字节数  
    返回多少个字节成功写入规则就是:以字母或者下划线开头,由字母数字下划线组成的串,用空字符来代替
      

  3.   


    echo preg_replace("/^[a-zA-Z_][a-zA-Z0-9_]*/m","",$pagecontent); 加m修正符
      

  4.   


    m (PCRE_MULTILINE) 默 认情况下,PCRE 将目标字符串作为单一的一“行”字符所组成的(甚至其中包含有换行符也是如此)。“行起始”元字符(^)仅仅匹配字符串的起始,“行 结束”元字符($)仅仅匹配字符串的结束,或者最后一个字符是换行符时其前面(除非设定了 D 修正符)。这和 Perl 是一样的。  当设定了此修正符,“行起始”和“行结束”除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。这和 Perl 的 /m 修正符是等效的。如果目标字符串中没有“\n”字符或者模式中没有 ^ 或 $,则设定此修正符没有任何效果。  
      

  5.   

    测试是可以的.
    <?php 
    $pagecontent = <<<TEST
    EasyFileHandle 
    InitEasyFileClient函数返回的句柄 filehandle 
    打开的文件句柄 pBuffer 
    指向要写入的缓存 nNumberOfBytesToWrite 
    指定要写入的字节数 lpNumberOfBytesWritten 
    返回多少个字节成功写入
    TEST;echo preg_replace("/^[a-zA-Z_][a-zA-Z0-9_]*/m","",$pagecontent); 
    ?>
      

  6.   

    不通用好像,改一下源字符为
    EasyFileHandle 
    [in] InitEasyFileClient函数返回的句柄
    就不好用了
      

  7.   

    不是说不通用,正则里写的是以字母为开头的,"[in] InitEasyFileClient函数返回的句柄 "是以[为开头的,这显然是不可能被替换的.
      

  8.   

    echo preg_replace("/[\s]*[a-zA-Z_][a-zA-Z0-9_]*[\s]+/m","",$pagecontent); 
      

  9.   

    $pagecontent = <<<TEST
    EasyFileHandle 
    [in] InitEasyFileClient函数返回的句柄 filehandle 
    打开的文件句柄 pBuffer 
    指向要写入的缓存 nNumberOfBytesToWrite 
    指定要写入的字节数 lpNumberOfBytesWritten 
    返回多少个字节成功写入
    TEST;echo preg_replace("/[\s]*[a-zA-Z_][a-zA-Z0-9_]*[\s]+/m","",$pagecontent);上面这样子也不行
      

  10.   

    InitEasyFileClient函数返回的句柄 
    这之间没有空格,所以也是没有办法去掉的.
    没有空格,你无法把它当做一个单词来处理.
      

  11.   

    正则,需要有一定的规则.我后来修正的是根据前后的空格或者回车换行之类,来检查是否为符合规则的单词.
    比如说[in]不是, "InitEasyFileClient函数返回的句柄"也不是,
    但是" InitEasyFileClient 函数返回的句柄"这样就是了.
      

  12.   

    echo preg_replace("/[a-zA-Z_][a-zA-Z0-9_]*/","",$pagecontent); 
      
    [] 函数返回的句柄  
    [] 打开的文件句柄  
    [] 指向要写入的缓存  
    [] 指定要写入的字节数  
    [] 返回多少个字节成功写入  你没有说清楚你的需求,请详细说明
    原串、替换后的结果