How do you cut off text after a certain amount of characters in PHP?
我有两个字符串,比如说前25个字符。有没有办法在第25个字符后剪掉文本并添加…到绳子的末端?
所以"12345678901234567890abcdefg"会变成"12345678901234567890ABCDE…",其中"fg"被切断。
我可以修改一下帕兰的密码吗?
如果较短,则不会添加"…"。
为了避免在一个单词中间直接剪切,您可能需要尝试
1 2 3 4 5 6 7 8 9 10 |
1 2 3 4 | string 'this is a long string that should be cut in the middle of the first 'that'' (length=74) |
1 2 3 4 5 | array 0 => string 'this is a long string' (length=21) 1 => string 'that should be cut in the' (length=25) 2 => string 'middle of the first' (length=19) 3 => string ''that'' (length=6) |
最后,你的
1 | string 'this is a long string' (length=21) |
使用一个substr,如下所示:
你会得到:
1 | string 'this is a long string tha...' (length=28) |
看起来不太好:-(
不过,玩得开心!
真的很快,
1 |
这个词很短,考虑到单词边界,它不使用循环,这使得它非常有效
1 2 3 4 5 |
用途:
1 | truncate('My string', 5); //returns: My... |
http://php.net/manual/en/function.mb-strimwidth.php(php 4>=4.0.6,php 5,php 7)
1 2 3 4 5 | <?php echo mb_strimwidth("Hello World", 0, 10,"..."); echo"<br />"; echo mb_strimwidth("Hello", 0, 10,"..."); ?> |
输出:
1 2 | Hello W... Hello |
1 2 3 4 5 6 |
我知道已经很晚了,但是如果有人回到这一页,这就可以了,
我同意帕斯卡·马丁的回答,并做了一些额外的改进。因为;
1-"php wordwarp",自动尊重单词边界
2-如果字符串包含超过25个字符的单词(aagh,因此没有任何操作),则可以强制"php wordwarp"剪切单词。(改进)
3-如果你的字符串少于25个字符,那么"…"在一个完整的句子后会显得很难看。(改进)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $str ="This string might be longer than 25 chars, or might not!"; // we are forcing to cut long words... $wrapped = wordwrap($str, 25," ", 1); var_dump($wrapped); $lines = explode(" ", $wrapped); var_dump($lines); // if our $str is shorter than 25, there will be no $lines[1] (array_key_exists('1', $lines)) ? $suffix = '...' : $suffix = ''; $new_str = $lines[0] . $suffix; var_dump($new_str); |
您正在寻找SUBSTR方法。
1 |
这会让你得到第一个字符串的夹头,然后你可以附加任何你想要的到结尾。
SUBSTR函数是适合您的函数
1 |
会的,但如果你处理的是文字,你可能会想切断文字边界,这样你就不会有部分文字这样做:快速BL…
所以要做到这一点(我头脑中的粗暴):
1 2 3 4 5 6 7 8 |
1 |
http://fr.php.net/manual/en/function.substr.php