function read_more($in,$len=160){
if(strlen($in)>$len){
return preg_replace('/[\s\.,][^\s\.,]*$/u', '', substr($in, 0, $len)).'...';
}else{
return $in;
}
}
echo read_mode("Lorem ipsum dolor sit amet, consectetur adipisicing elit. Proin nibh augue, suscipit a, scelerisque sed, lacinia in, mi. Cras vel lorem. Etiam pellentesque aliquet tellus. Phasellus pharetra nulla ac diam. Quisque semper justo at risus. Donec venenatis, turpis vel hendrerit interdum, dui ligula ultricies purus, sed posuere libero dui id orci.");
/* Output:
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Proin nibh augue, suscipit a, scelerisque sed, lacinia in, mi. Cras vel lorem. Etiam pellentesque...*/
rtrim
(PHP 4, PHP 5)
rtrim — 문자열 마지막의 공백(이나 다른 문자)을 제거
설명
string rtrim
( string $str
[, string $charlist
] )
str의 끝 부분에서 공백을 제거한 문자열을 반환합니다.
두번째 인수가 없으면, rtrim()은 다음 문자들을 제거합니다:
- " " (ASCII 32 (0x20)), 보통의 공백.
- "\t" (ASCII 9 (0x09)), 탭.
- "\n" (ASCII 10 (0x0A)), 새 줄(줄바꿈).
- "\r" (ASCII 13 (0x0D)), 캐리지 리턴.
- "\0" (ASCII 0 (0x00)), NUL 바이트.
- "\x0B" (ASCII 11 (0x0B)), 수직 탭.
인수
- str
-
입력 문자열.
- charlist
-
charlist 인수를 통해서 제거하기를 원하는 문자를 지정할 수 있습니다. 간단히 제거하기를 원하는 모든 문자를 기록하면 됩니다. ..로 문자의 범위를 지정할 수 있습니다.
반환값
변경된 문자열을 반환합니다.
변경점
| 버전 | 설명 |
|---|---|
| 4.1.0 | charlist 인수 추가. |
예제
Example #1 rtrim() 사용 예제
<?php
$text = "\t\tThese are a few words :) ... ";
$binary = "\x09Example string\x0A";
$hello = "Hello World"
var_dump($text, $binary, $hello);
print "\n";
$trimmed = rtrim($text);
var_dump($trimmed);
$trimmed = rtrim($text, " \t.");
var_dump($trimmed);
$trimmed = rtrim($hello, "Hdle");
var_dump($trimmed);
// $binary의 마지막 부분에서 아스키 제어 문자를 제거합니다.
// (0부터 31까지)
$clean = rtrim($binary, "\0x00..\0x1F");
var_dump($clean);
?>
위 예제의 출력:
string(32) " These are a few words :) ... " string(16) " Example string " string(11) "Hello World" string(30) " These are a few words :) ..." string(26) " These are a few words :)" string(9) "Hello Wor" string(15) " Example string"
krzysiek dot 333 at gmail dot com
01-May-2012 03:58
NBS Studio
21-Feb-2010 10:02
The simplest way to strip a newline form a text file is ltrim();
trim or explode or split ("\n" or "\r\n") doesn't work in all cases, so give ltrim(); a try instead.
info at nbs-studio dot com
21-Feb-2010 10:02
The simplest way to strip a newline form a text file is ltrim();
trim or explode or split ("\n" or "\r\n") doesn't work in all cases, so give ltrim(); a try instead.
pinkgothic at gmail dot com
21-Jan-2010 10:36
I have an obsessive love for php's array functions given how extremely easy they've made complex string handling for me in various situations... so, have another string-rtrim() variant:
<?php
function strrtrim($message, $strip) {
// break message apart by strip string
$lines = explode($strip, $message);
$last = '';
// pop off empty strings at the end
do {
$last = array_pop($lines);
} while (empty($last) && (count($lines)));
// re-assemble what remains
return implode($strip, array_merge($lines, array($last)));
}
?>
Astonishingly, something I didn't expect, but: It completely compares to harmor's rstrtrim below, execution time wise. o_o Whee!
harmor
04-Apr-2008 09:05
I'm sure there's a better way to strip strings from the end of strings.
<?php
/**
* Strip a string from the end of a string
*
* @param string $str the input string
* @param string $remove OPTIONAL string to remove
*
* @return string the modified string
*/
function rstrtrim($str, $remove=null)
{
$str = (string)$str;
$remove = (string)$remove;
if(empty($remove))
{
return rtrim($str);
}
$len = strlen($remove);
$offset = strlen($str)-$len;
while($offset > 0 && $offset == strpos($str, $remove, $offset))
{
$str = substr($str, 0, $offset);
$offset = strlen($str)-$len;
}
return rtrim($str);
} //End of function rstrtrim($str, $remove=null)
echo rstrtrim('Hello World!!!', '!') .'<br />'; //"Hello World"
echo rstrtrim('Hello World!!!', '!!') .'<br />'; //"Hello World!"
echo rstrtrim('Hello World!!!', '!!!') .'<br />'; //"Hello World"
echo rstrtrim('Hello World!!!', '!!!!').'<br />'; //"Hello World!!!"
?>
YAS
08-May-2006 12:01
To remove an unwanted character - example "." - if exist or not.
The example above doesn't include the case where there is no "."
If there is not "." at the example above the last word will be deleted.
Have fun with this code.
<?php
$text = "This string contains. some unwanted characters on the end .";
$text = trim($text);
$last = $text{strlen($text)-1};
if (!strcmp($last,"."))
{
$text = rtrim($text, 'a..z');
$text = rtrim($text, '.');
}
?>
gbelanger at exosecurity dot com
17-Feb-2006 07:31
True, the Perl chomp() will only trim newline characters. There is, however, the Perl chop() function which is pretty much identical to the PHP rtrim()
---
Here's a quick way to recursively trim every element of an array, useful after the file() function :
<?php
# Reads /etc/passwd file an trims newlines on each entry
$aFileContent = file("/etc/passwd");
foreach ($aFileContent as $sKey => $sValue) {
$aFileContent[$sKey] = rtrim($sValue);
}
print_r($aFileContent);
?>
Unimagined at UnaimaginedDesigns dot Com
15-Jan-2005 05:49
I needed a way to trim all white space and then a few chosen strings from the end of a string. So I wrote this class to reuse when stuff needs to be trimmed.
<?php
class cleaner {
function cleaner ($cuts,$pinfo) {
$ucut = "0";
$lcut = "0";
while ($cuts[$ucut]) {
$lcut++;
$ucut++;
}
$lcut = $lcut - 1;
$ucut = "0";
$rcut = "0";
$wiy = "start";
while ($wiy) {
if ($so) {
$ucut = "0";
$rcut = "0";
unset($so);
}
if (!$cuts[$ucut]) {
$so = "restart";
} else {
$pinfo = rtrim($pinfo);
$bpinfol = strlen($pinfo);
$tcut = $cuts[$ucut];
$pinfo = rtrim($pinfo,"$tcut");
$pinfol = strlen($pinfo);
if ($bpinfol == $pinfol) {
$rcut++;
if ($rcut == $lcut) {
unset($wiy);
}
$ucut++;
} else {
$so = "restart";
}
}
}
$this->cleaner = $pinfo;
}
}
$pinfo = "Well... I'm really bored...<br /><br> \n\t <br><br /><br> \r\r <br>\r<br /><br>\r \n<br> <br />\t";
$cuts = array('\n','\r','\t',' ',' ',' ','<br />','<br>','<br/>');
$pinfo = new cleaner($cuts,$pinfo);
$pinfo = $pinfo->cleaner;
print $pinfo;
?>
That class will take any string that you put in the $cust array and remove it from the end of the $pinfo string. It's useful for cleaning up comments, articles, or mail that users post to your site, making it so there's no extra blank space or blank lines.
todd at magnifisites dot com
19-Aug-2003 12:19
This shows how rtrim works when using the optional charlist parameter:
rtrim reads a character, one at a time, from the optional charlist parameter and compares it to the end of the str string. If the characters match, it trims it off and starts over again, looking at the "new" last character in the str string and compares it to the first character in the charlist again. If the characters do not match, it moves to the next character in the charlist parameter comparing once again. It continues until the charlist parameter has been completely processed, one at a time, and the str string no longer contains any matches. The newly "rtrimmed" string is returned.
<?php
// Example 1:
rtrim('This is a short short sentence', 'short sentence');
// returns 'This is a'
// If you were expecting the result to be 'This is a short ',
// then you're wrong; the exact string, 'short sentence',
// isn't matched. Remember, character-by-character comparison!
// Example 2:
rtrim('This is a short short sentence', 'cents');
// returns 'This is a short short '
?>
HW
05-Jun-2003 12:32
<?php
$text = "This string contains some unwanted characters on the end.";
$text1 = rtrim($text, 'a..z');
$text1 = rtrim($text1, '.');
echo $text1; // only the '.' is trimmed.
$text2 = rtrim($text, 'a..z.');
echo $text2; // The whole last word is trimmed.
?>
