比如有字符串 {12 3 5}9856{5 687 4} 用php处理 除掉{}以及所包含的字符 得到9856 请大家帮帮忙!

解决方案 »

  1.   


    $str = '{12 3 5}9856{5 687 4}';
    preg_match_all('/\}(\d+)\{/', $str, $matches);
    print_r($matches[1]);
    /**
    输出结果:
    Array ( [0] => 9856 ) 
    */
      

  2.   

    能不正则则不正则$str='{12 3 5}9856{5 687 4}';
    $start=strpos($str,'}')+1;
    $len=strpos($str,'{')-$start-1;
    $str=substr($str,$start,$len);
    echo $str;
      

  3.   


    {dede:img text='' width='709' height='417'} /uploads/allimg/100920/82-100920203252.jpg {/dede:img} 这字符串 之后得到的结果是/uploads/a
    这样不对啊
      

  4.   

    用二楼的正则匹配。或者替换都可以。$str = '{12 3 5}9856{5 687 4}';
    echo preg_replace('/\{[^\}]*\}/U', '',$str);
      

  5.   

    首先3楼大哥的意见是不错,确实是能不要正则的就不要正则,可是你的代码是提供的也有问题!比如把字符串改成$str='{13532 3 5}9856{75 687327 4}';我改了一下$str='{13532 3 5}9856{75 687327 4}';
    $start=strpos($str,'}')+1;//strpos查找字符第一次出现的位置
    $len=strrpos($str,'{')-$start;//strrpos查找字符最后一次出现的位置
    $str=substr($str,$start,$len);//是从给定的字符表达式或备注字段中返回一个子字符串。
    echo $str;
      

  6.   

    u win。如果要匹配更多的东西还是得上正则。
      

  7.   

    我不过是班门弄斧了!最近半年在PHP版块提问区很经常看到您老的身影!
    正是因为有像您这么热心的人, 
    才让PHP版块新手们快速的成长!