使用php反向捕获又不知道怎么回事了。把下面字符串里面的4个连续的数外面的符号去掉。fsdfsdafasfasdfsdf<{2365}>,还请分析下我写的哪里有问题?<?php
header("Content-type:text/html;charset=utf-8");
$str="fsdfsdafasfasdfsdf<{2365}>";
$mypreg="/<{(\d\d\d\d)}>/";//()里面表示4个连续的数,使用括号表示我捕获这个子表达式,一会引用
$mycon="\1"; //这个是替换内容,我反向引用上面的4个数字2365,用这4个数字替换上面有外符号的整块<{2365}>
echo $str;
echo "<br/>";
$str=preg_replace($mypreg,$mycon,$str);
echo $str;
结果是能够捕获到<{2365}> 这个东东,但是反向引用怎么都没有内容,应该是反向引用错了,没有引用到内容。求指点。

解决方案 »

  1.   

    是不是没有指定子表达式的组名啊
    要指定一个子表达式的组名,使用这样的语法:(?<Word>\w+)
    word就是表达式的组名
    放到后面引用的语法\k<Word>我也是新学的 理解也不深
      

  2.   

    $mycon="\${1}";  
    这样可以捕获到,但不知道为什么??
      

  3.   

    $mycon="\\1"; 
    或者
    $mycon='\1';都可以