str='<b>1</b>,<b>2</b>,<b>3</b>,<b>4</b>,<b>5</b>'现在用正则表达式取<b>跟</b>中间的数。返回时只要四个值,即1-4。不要五个要怎么取?还有正则能计算吗?比如把取得的数值加1.再把值返回到STR中去。。变成str='<b>2</b>,<b>3</b>,<b>4</b>,<b>5</b>,<b>6</b>'最后一个问题。。正则取得的数组值。。能不能一次性以字符串输出?
也就是最后的值变成12345

解决方案 »

  1.   

    解决思路是:用正则把数据提取到数据, 再处理, 因为一般正则比较慢, 在抓取数据时还要处理, 这个不灵活, 效率也其次
    $str = '|<b>(.*)</b>|U';
    $pet = '<b>1 </b>, <b>2 </b>, <b>3 </b>, <b>4 </b>, <b>5 </b>';preg_match_all($str,$pet,$out, PREG_PATTERN_ORDER);print_r($out[0]); //$out 就是你想要的数据, 如何处理输出就简单了
    还有正则能计算吗?比如把取得的数值加1.
    ----------------------------------
    这个可以用str_replace()实现, 手册上有例子
      

  2.   

    $str=' <b>1 </b>, <b>2 </b>, <b>3 </b>, <b>4 </b>, <b>5 </b>';//现在用正则表达式取 <b>跟 </b>中间的数。返回时只要四个值,即1-4。不要五个要怎么取? preg_match_all('/<b>([1-4])\s*<\/b>/U', $str, $reg);
    print_r($reg[1]);
    //还有正则能计算吗?比如把取得的数值加1.再把值返回到STR中去。。变成 
    //str=' <b>2 </b>, <b>3 </b>, <b>4 </b>, <b>5 </b>, <b>6 </b>' 
    echo preg_replace('/\d/e', '$0+1', $str);//最后一个问题。。正则取得的数组值。。能不能一次性以字符串输出? 
    //也就是最后的值变成12345 
    echo preg_replace('/[^\d]*(\d)[^\d]*/', '$1', $str);