文章内容详情

伪原创工具str_replace,重复问题解决,数组版本


使用 str_replace 来替换字符串比较方便,但所有匹配 search 的值都会被替换为 replace 的值。如果指想替换指定次数,这个方法就不能实现了。

例如:user_order_list 替换为user/order_list

<?php   $str = 'user_order_list';   echo str_replace('_', '/', $str); // user/order/list   ?>

替换指定次数的方法,可以使用正则 preg_replace 方法来实现。

<?php   /**   * 对字符串执行指定次数替换   * @param  Mixed $search   查找目标值   * @param  Mixed $replace  替换值   * @param  Mixed $subject  执行替换的字符串/数组   * @param  Int   $limit    允许替换的次数,默认为-1,不限次数   * @return Mixed   */   function str_replace_limit($search, $replace, $subject, $limit=-1){       if(is_array($search)){           foreach($search as $k=>$v){               $search[$k] = '`'. preg_quote($search[$k], '`'). '`';           }       }else{           $search = '`'. preg_quote($search, '`'). '`';       }       return preg_replace($search, $replace, $subject, $limit);   }   ?>   <?php   $str = 'user_order_list';   echo str_replace_limit('_', '/', $str, 1); // user/order_list      $arr = array('abbc','bbac','cbba');   $result = str_replace_limit('b', 'B', $arr, 1);   print_r($result); // Array ( [0] => aBbc [1] => Bbac [2] => cBba )   ?>

      阿喀交