当前位置:首页 > PHP教程 > php应用 > 列表

php替换字符串中间字符为省略号的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-25 14:58:34 浏览: 评论:0 

这篇文章主要介绍了php替换字符串中间字符为省略号的方法,可实现将字符串中间部分替换成省略号的功能,适用于账号、手机号等敏感信息的部分隐藏,需要的朋友可以参考下。

本文实例讲述了php替换字符串中间字符为省略号的方法。分享给大家供大家参考。具体分析如下:

对于一个长字符串,如果你只希望用户看到头尾的部分内容,隐藏掉中间内容,你可以使用这个php函数,他可以指定要隐藏掉的中间字符串的数量。

  1. /** 
  2.  * Reduce a string by the middle, keeps whole words together 
  3.  * 
  4.  * @param string $string 
  5.  * @param int $max (default 50) 
  6.  * @param string $replacement (default [...]) 
  7.  * @return string 
  8.  * @author david at ethinkn dot com 
  9.  * @author loic at xhtml dot ne 
  10.  * @author arne dot hartherz at gmx dot net 
  11.  */ 
  12. function strMiddleReduceWordSensitive($string,$max=50,$rep='[...]'){ 
  13.   $strlen = strlen($string); 
  14.   if ($strlen <= $max
  15.     return $string
  16.   $lengthtokeep = $max - strlen($rep); 
  17.   $start = 0; 
  18.   $end = 0; 
  19.   if (($lengthtokeep % 2) == 0) { 
  20.     $start = $lengthtokeep / 2; 
  21.     $end = $start
  22.   } else { 
  23.     $start = intval($lengthtokeep / 2); 
  24.     $end = $start + 1; 
  25.   } 
  26.   $i = $start
  27.   $tmp_string = $string
  28.   while ($i < $strlen) { 
  29.     if (isset($tmp_string[$i]) and $tmp_string[$i] == ' ') { 
  30.       $tmp_string = substr($tmp_string, 0, $i) . $rep
  31.       $return = $tmp_string
  32.     } 
  33.     $i++; 
  34.   } 
  35.   $i = $end
  36.   $tmp_string = strrev ($string); 
  37.   while ($i < $strlen) { 
  38.     if (isset($tmp_string[$i]) and $tmp_string[$i] == ' ') { 
  39.       $tmp_string = substr($tmp_string, 0, $i); 
  40.       $return .= strrev ($tmp_string); 
  41.     } 
  42.     $i++; 
  43.   } 
  44.   return $return
  45.   return substr($string, 0, $start).$rep.substr($string, - $end); 

演示范例:

  1. // example: 
  2. $text = 'This is a very long test sentence, bla foo bar nothing'
  3. print strMiddleReduceWordSensitive ($text, 30) . "\n"
  4. // Returns: This is a very[...]foo bar nothing (~ 30 chrs) 
  5. print strMiddleReduceWordSensitive ($text, 30, '...') . "\n"
  6. // Returns: This is a very...foo bar nothing (~ 30 chrs)

Tags: php替换字符串

分享到: