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

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

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

/**
 * Reduce a string by the middle, keeps whole words together
 *
 * @param string $string
 * @param int $max (default 50)
 * @param string $replacement (default [...])
 * @return string
 * @author david at ethinkn dot com
 * @author loic at xhtml dot ne
 * @author arne dot hartherz at gmx dot net
 */
function strMiddleReduceWordSensitive($string,$max=50,$rep='[...]'){
  $strlen = strlen($string);
  if ($strlen <= $max)
    return $string;
  $lengthtokeep = $max - strlen($rep);
  $start = 0;
  $end = 0;
  if (($lengthtokeep % 2) == 0) {
    $start = $lengthtokeep / 2;
    $end = $start;
  } else {
    $start = intval($lengthtokeep / 2);
    $end = $start + 1;
  }
  $i = $start;
  $tmp_string = $string;
  while ($i < $strlen) {
    if (isset($tmp_string[$i]) and $tmp_string[$i] == ' ') {
      $tmp_string = substr($tmp_string, 0, $i) . $rep;
      $return = $tmp_string;
    }
    $i++;
  }
  $i = $end;
  $tmp_string = strrev ($string);
  while ($i < $strlen) {
    if (isset($tmp_string[$i]) and $tmp_string[$i] == ' ') {
      $tmp_string = substr($tmp_string, 0, $i);
      $return .= strrev ($tmp_string);
    }
    $i++;
  }
  return $return;
  return substr($string, 0, $start).$rep.substr($string, - $end);
}

演示范例:

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

希望本文所述对大家的php程序设计有所帮助。

(0)

相关推荐

  • PHP中strtr字符串替换用法详解

    本文实例讲述了PHP中strtr字符串替换用法.分享给大家供大家参考.具体分析如下: strtr(string,from,to)或者strtr(string,array) 首先针对strtr函数第一种方式,我们看看下面的举例,代码如下: 复制代码 代码如下: <?php echo strtr("I Love you","Lo","lO"); ?> 得到的结果是: 1 I lOve yOu 这个结果提醒我们,1.strtr它是区分大小写

  • php字符串过滤与替换小结

    本文实例总结了php字符串过滤与替换的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <?php class cls_string_filter{  //将\n转化为<br/>--囧,这有意思么?  static public function nl2br($string){   return nl2br($string);  }  //将<br/>转化为\n  static public function br2nl($string){   $arra

  • php中利用explode函数分割字符串到数组

    分割字符串 //利用 explode 函数分割字符串到数组 复制代码 代码如下: <?php $source = "hello1,hello2,hello3,hello4,hello5";//按逗号分离字符串 $hello = explode(',',$source); for($index=0;$index<count($hello);$index++) { echo $hello[$index];echo "</br>"; } ?>

  • php下关于中英数字混排的字符串分割问题

    在网上找了一点时间,发现都不怎样. 后来就自己想了个办法,算是原创吧. 只是用截取加替换的功能. 复制代码 代码如下: function smssubstr($string, $length) { if(strlen($string) <= $length) { return $string; } $strcut = ''; for($i = 0; $i < $length; $i++) { $strcut .= ord($string[$i]) > 127 ? $string[$i].

  • php+正则将字符串中的字母数字和中文分割

    如:$str="php如何将字 符串中322的字母数字sf f45d和中文_分割?";按数字或字母分割. 复制代码 代码如下: $str = "php如何将字 符串中322的字母数字Asf f45d和中文_分割?";$arr = preg_split("/([a-zA-Z0-9]+)/", $str, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);  print_r($arr); 结果 复制

  • php 字符串替换的方法

    这几天,工作中遇到一个小问题,有一内容类型的字段存储的是语言,因为这写数据是用Excel导入做的,所以为了处理简单,很多的语言就用逗号分隔,把所有语言做一个字符串,这样存入的时候就简单的多.但是由于当初数据质量的问题,有一部分"Chinese"是 "Mandarin Chinese",现在需要把所有的"Mandarin Chinese"改为"Chinese". 这就需要把一个字符串中的部分字符串替换掉.对于这样的问题,一般就是

  • php字符串分割函数explode的实例代码

    array explode (string $separator, string $string [, int $limit]) 该函数有3个参数,第一个参数$separator设置一个分割字符(串).第二个参数$string指定所要操作的字符串.$limit参数是可选的,指定最多将字符串分割为多少个子串.该函数返回一个由被分割的子串组成的数组. 来看下面的例子,对一个由逗号分隔的多行文本数据进行分析.例1,分割字符串. 复制代码 代码如下: <?php$this_year = 2013;$te

  • PHP preg_replace() 正则替换所有符合条件的字符串

    需要我们用程序处理的数据并不总是预先以数据库思维设计的,或者说是无法用数据库的结构去存储的. 比如模版引擎解析模版.垃圾敏感信息过滤等等. 一般这种情况,我们用正则按我们的规则去匹配preg_match.替换preg_replace. 但一般的应用中,无非是些数据库CRUD,正则摆弄的机会很少. 根据前面说的,两种场景:统计分析,用匹配:处理用替换. PHP preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹

  • php使用自定义函数实现汉字分割替换功能示例

    本文实例讲述了php自定义函数实现汉字分割替换功能.分享给大家供大家参考,具体如下: header("Content-type:text/html;charset=utf-8"); $str="赵钱孙"; function mbstringToArray($str,$charset) { $strlen=mb_strlen($str); while($strlen){ $array[]=mb_substr($str,0,1,$charset); $str=mb_su

  • PHP 字符串分割和比较

    或者使用strcmp来判断,但是这个能够告诉你两个字符串是否相等,但是无法告诉你在那里不同. 我的思路是单字符串分割为一个个字母(character),这样比较就能精确知道在那个位置不同了. 分隔字符串,使用"str_split"就可以了,语法参考[2].然后输出结果数组,好处是连空格也会作为数组的元素.我之前的例子就是因为前一个字符串包含2个空格,而后一个只有一个.但是输出的时候看到的显示都是一样的. 也可以按照其他分隔符进行分割,如"explode"或者&quo

  • php支持中文字符串分割的函数

    str_split不支持中文,利用mb_xx函数实现个 /** * Convert a string to an array * @param string $str * @param number $split_length * @return multitype:string */ function mb_str_split($str,$split_length=1,$charset="UTF-8"){ if(func_num_args()==1){ return preg_spl

  • PHP 字符串正则替换函数preg_replace使用说明

    1. preg_replace() $msg = preg_replace("/<style>.+<\/style>/is", "", $msg); -----删除<style></style>和中间的部分 $msg = preg_replace("/<[^>]+>/", "", $msg); -----是删除<>和中间的内容 i (PCRE_CAS

随机推荐