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

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

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

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

/**
* 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);
}

  演示范例:

  ?

1
2
3
4
5
6

// 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程序设计有所帮助。

时间: 2024-12-31 20:11:39

php替换字符串中间字符为省略号的方法的相关文章

string-android,替换字符串中*字符

问题描述 android,替换字符串中*字符 有一个字符串变量,包含*.但是我需要替换其中所以的*字符. 我写的代码没有实现: text = text.replaceAll("*",""); text = text.replaceAll("*",null); 请大家帮忙解决,谢谢. 解决方案 用String#replace() 方法实现多简单,这个方法不会将regex当做参数. text = text.replace("*",

JS替换字符串中字符即替换全部而不是第一个_javascript技巧

有时候用JS替换字符串时,replyText= replyText.replace("aa",""); 这样只能替换掉字符串中第一个aa,有时候需要替换全部的aa,这种方法就不能使用了.. 可以用如下方法做参考: 复制代码 代码如下: function del_html_tags(str,reallyDo,replaceWith) { var e=new RegExp(reallyDo,"g"); words = str.replace(e, r

输入一个字符串并打印出该字符串中字符的所有排列

题目: 输入一个字符串, 打印出该字符串中字符的所有排列. 方法: 使用递归依次交换位置, 打印输出. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <stdio.h> void Permutation(char* str, char* begin); void Permutation(char* str){ if(str == NULL) r

字符串替换-java如何将字符串的所有括号中指定字符替换掉?(正则表达式或者其它方法)

问题描述 java如何将字符串的所有括号中指定字符替换掉?(正则表达式或者其它方法) 要处理字符串 Medical Care ( Costs Inverse ## agonism ( Costs Inverse ## agonism ) ) Costs ( Inverse ## agonism ) at beta_1 ##adrenergic receptors 替换操作:将字符串中 所有括号 内的 ##替换成 @ 处理结果: Medical Care ( Costs Inverse @ ago

将字符串重复的字符替换成单个字符的正则表达式

问题描述 将字符串重复的字符替换成单个字符的正则表达式 java怎么样将字符串中重复的字符替换成单个字符的正则表达式 解决方案 String str = "abaabcaaaad"; String ret = str.replaceAll("[a]+", "a");//替换字符a System.out.println(ret); 解决方案二: char[] arr = new char[s.length()]; int j = 0; outer:

js替换字符串中所有指定的字符(实现代码)_javascript技巧

第一次发现JavaScript中replace() 方法如果直接用str.replace("-","!") 只会替换第一个匹配的字符. 而str.replace(/\-/g,"!")则可以全部替换掉匹配的字符(g为全局标志). replace() The replace() method returns the string that results when you replace text matching its first argumen

js replace(a,b)之替换字符串中所有指定字符的方法_javascript技巧

如下所示: var str = 'abcadeacf'; var str1 = str.replace('a', 'o'); alert(str1); // 打印结果: obcadeacf var str2 = str.replace(/a/g, 'o'); alert(str2); //打印结果: obcodeocf, 注意: 此处replace的第一个参数为正则表达式,/g是全文匹配标识. 以上这篇js replace(a,b)之替换字符串中所有指定字符的方法就是小编分享给大家的全部内容了,

php 替换字符串中第N次出现的字符代码

比如有一个字符串:$a='hello world hello pig hello cat hello dog hello small boy'; 然后想将第3次出现的hello 改变成为good-bye,比如: 'hello world hello pig good-bye cat hello dog hello small boy': 这样的情况,我一时半会没找到PHP的内置函数,而且在要求不能使用正则表达式的情况下,就编写了这个简易的小函数,如果大家有好的内置函数推荐,欢迎留言:)  代码如

PHP substr_replace 替换字符串指定位置字符

/* int mb_strlen ( string $str [, string $encoding ] )  代码如下 复制代码 <?php教程 echo substr_replace("Hello world","earth",6); Hello earth ?> 值得一提的,当开始和长度都是负和,长度小于或等于开始,长度将有被设置为0的效果.  代码如下 复制代码 <?php substr_replace('eggs','x',-1,-1);