解决方案 »

  1.   

    第二段代码是错的,应该怎么改才能输出$startdate = 5/27/1999呢?
      

  2.   

    第一段代码是错误的,应写作$string = "april 15, 2003";
    $pattern = "/(\w+) (\d+), (\d+)/i";
    $replacement = "\${1}1,\$3";
    print preg_replace($pattern, $replacement, $string);
    或$string = "april 15, 2003";
    $pattern = "/(\w+) (\d+), (\d+)/i";
    $replacement = '${1}1,$3';
    print preg_replace($pattern, $replacement, $string);同理第二段代码应写作$patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/",
                       "/^\s*{(\w+)}\s*=/");
    $replace = array ("\\3/\\4/\\1/\\2", "$\\1 =");
    print preg_replace ($patterns, $replace, "{startdate} = 1999-5-27");
    $n 或 \\n 均是向后引用的记号,表示第 n 个圆括号中的内容
      

  3.   

    双引号中 php 会试图将 $ 解释为变量的前导
    字符串 "${1}" 将引起变量未定义的错误
    所以要转义掉,这样才会把 ${1} 交给 prea_replace 去处理