aaa.bbb.ccc.ddd $aaa.bbb.ccc.ddd... aaa.bbb.ccc.ddd
用正则如何替换成
aaa.bbb.ccc.ddd $a.b.c.d... aaa.bbb.ccc.ddd刚两次提问都没提问道点子上

解决方案 »

  1.   

    先上个试试。。$str = 'aaa.bbb.ccc.ddd $aaa.bbb.ccc.ddd... aaa.bbb.ccc.ddd';echo preg_replace_callback('/\$([a-z]+)((?:.[a-z]+)+)/i', 'test', $str);function test($m)
    {
        $arr = explode('.',trim($m[0], '$'));
        $join = array();
        foreach($arr as $a) {
            $join[] = $a[0];
        }
        return '$' . implode($join, '.');
    }/**
    输出:aaa.bbb.ccc.ddd $a.b.c.d... aaa.bbb.ccc.ddd
    */
      

  2.   

    $s = 'aaa.bbb.ccc.ddd $aaa.bbb.ccc.ddd... aaa.bbb.ccc.ddd';echo preg_replace_callback('/\$[^\s]+/', 'back', $s);function back($r) {
      return preg_replace('/(\w)+/', '$1', $r[0]);
    }aaa.bbb.ccc.ddd $a.b.c.d... aaa.bbb.ccc.ddd
      

  3.   

    $s='aaa.bbb.ccc.ddd $aaa.bbb.ccc.ddd... aaa.bbb.ccc.ddd';
    echo preg_replace('/\$([a-z.]+)/e','"$".foo("$1")',$s);
    function foo($v){return preg_replace('/([a-z])+/','\1',$v);}