//模板
$template = preg_replace("/\<\!\-\-\{template\s+([a-z0-9_\/]+)\}\-\-\>/ie", "readtemplate('\\1')", $template);里面的/ie、/ies、/is、/s等这些,哪位大大能详细解释下?//变量
$var_regexp = "((\\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)(\[[a-zA-Z0-9_\-\.\"\'\[\]\$\x7f-\xff]+\])*)";
$template = preg_replace("/\<\!\-\-\{(.+?)\}\-\-\>/s", "{\\1}", $template);
$template = preg_replace("/([\n\r]+)\t+/s", "\\1", $template);
$template = preg_replace("/(\\\$[a-zA-Z0-9_\[\]\'\"\$\x7f-\xff]+)\.([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)/s", "\\1['\\2']", $template);
$template = preg_replace("/\{(\\\$[a-zA-Z0-9_\[\]\'\"\$\.\x7f-\xff]+)\}/s", "<?=\\1?>", $template);
$template = preg_replace("/$var_regexp/es", "addquote('<?=\\1?>')", $template);
$template = preg_replace("/\<\?\=\<\?\=$var_regexp\?\>\?\>/es", "addquote('<?=\\1?>')", $template);
//常量
$template = preg_replace("/\{([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\}/s", "<?=\\1?>", $template);这里也看得不怎么明白,希望也能详细解释下?

解决方案 »

  1.   

     i
    如果设定此修正符,模式中的字符将同时匹配大小写字母。m
    当设定了此修正符,“行起始”和“行结束”除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。s
    如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。x
    如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 # 以及下一个换行符之间的所有字符,包括两头,也都被忽略。 e
    如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,
      

  2.   

    就以这一句来解释下吧
    $template = preg_replace("/\{([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\}/s", "<?=\\1?>", $template);\  是转意符
    ([a-zA-Z_\x7f-\xff]   是任意大小写的英文字符和_和双字节的中文字符中的任意一个
    [a-zA-Z0-9_\x7f-\xff]  是任意大小写的英文字符和个位数字和_和双字节的中文字符中的任意一个
    \\1 是对前面第一个圆括号匹配的内容的引用整个意思就是说: 把$template中{}内的 以英文字符或下划线或中文字符开头的,仅包含英文字符下划线数字和中文字符的字符串 替换成<?=这个字符串?>例如;
    $template    = '我{们}_ab{c6}-1{2}3';
    echo $template."<br>\n" ;
    $template = preg_replace("/\{([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\}/s", "<?=\\1?>", $template);
    echo $template ;输出
    我{们}_ab{c6}-1{2}3
    我<?=们?>_ab<?=c6?>-1{2}3
    {2}为什么没被替换?是因为它是以数字开头的。
      

  3.   

    preg_replace("/\<\!\-\-\{(.+?)\}\-\-\>/s", "{\\1}", $template);.+?是啥意思?另外有个问题,哪里有全一点资料,这样问一点一点好麻烦
      

  4.   

    精通正则表达式
    http://blog.csdn.net/wlzhengzebiaodashi字符^ 
    意义:表示匹配的字符必须在最前边。 
    例如:/^A/不匹配"an A,"中的'A',但匹配"An A."中最前面的'A'。 字符$ 
    意义:与^类似,匹配最末的字符。 
    例如:/t$/不匹配"eater"中的't',但匹配"eat"中的't'。 字符* 
    意义:匹配*前面的字符0次或n次。 
    例如:/bo*/匹配"A ghost booooed"中的'boooo'或"A bird warbled"中的'b',但不匹配"A goat g 
    runted"中的任何字符。 字符+ 
    意义:匹配+号前面的字符1次或n次。等价于{1,}。 
    例如:/a+/匹配"candy"中的'a'和"caaaaaaandy."中的所有'a'。 字符? 
    意义:匹配?前面的字符0次或1次。 
    例如:/e?le?/匹配"angel"中的'el'和"angle."中的'le'。 字符. 
    意义:(小数点)匹配除换行符外的所有单个的字符。 
    例如:/.n/匹配"nay, an apple is on the tree"中的'an'和'on',但不匹配'nay'。