php替换字符串中间字符为省略号的方法
本文实例讲述了php替换字符串中间字符为省略号的方法。分享给大家供大家参考。具体分析如下:
对于一个长字符串,如果你只希望用户看到头尾的部分内容,隐藏掉中间内容,你可以使用这个php函数,他可以指定要隐藏掉的中间字符串的数量
/**
*Reduceastringbythemiddle,keepswholewordstogether
*
*@paramstring$string
*@paramint$max(default50)
*@paramstring$replacement(default[...])
*@returnstring
*@authordavidatethinkndotcom
*@authorloicatxhtmldotne
*@authorarnedothartherzatgmxdotnet
*/
functionstrMiddleReduceWordSensitive($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;
returnsubstr($string,0,$start).$rep.substr($string,-$end);
}
演示范例:
//example: $text='Thisisaverylongtestsentence,blafoobarnothing'; printstrMiddleReduceWordSensitive($text,30)."\n"; //Returns:Thisisavery[...]foobarnothing(~30chrs) printstrMiddleReduceWordSensitive($text,30,'...')."\n"; //Returns:Thisisavery...foobarnothing(~30chrs)
希望本文所述对大家的php程序设计有所帮助。