PHP Doku:: Entfernt Leerraum (oder andere Zeichen) vom Ende eines Strings - function.rtrim.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzTextverarbeitungZeichenkettenString-Funktionenrtrim

Ein Service von Reinhard Neidl - Webprogrammierung.

String-Funktionen

<<quotemeta

setlocale>>

rtrim

(PHP 4, PHP 5)

rtrimEntfernt Leerraum (oder andere Zeichen) vom Ende eines Strings

Beschreibung

string rtrim ( string $str [, string $charlist ] )

Diese Funktion gibt den String str zurück, von dessen Ende alle Whitespaces entfernt wurden.

Ohne den zweiten Parameter entfernt rtrim() diese Zeichen:

  • " " (ASCII 32 (0x20)), ein einfaches Leerzeichen.
  • "\t" (ASCII 9 (0x09)), ein Tabulator.
  • "\n" (ASCII 10 (0x0A)), ein Zeilenvorschub (line feed).
  • "\r" (ASCII 13 (0x0D)), ein Wagenrücklauf-Zeichen (carriage return).
  • "\0" (ASCII 0 (0x00)), das NUL-Byte.
  • "\x0B" (ASCII 11 (0x0B)), ein vertikaler Tabulator.

Parameter-Liste

str

Die Eingabezeichenkette.

charlist

Sie können mittels des charlist-Parameters eigene Zeichen angeben, die Sie entfernen lassen möchten. Führen Sie einfach alle zu löschenden Zeichen auf. Mittels .. können Sie einen Bereich von Zeichen benennen.

Rückgabewerte

Gibt die modifizierte Zeichenkette zurück.

Changelog

Version Beschreibung
4.1.0 Der Parameter charlist wurde hinzugefügt.

Beispiele

Beispiel #1 Beispiel zur Verwendung von 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);

// entfernt die ASCII Steuerzeichen vom Ende von $binary
// (von 0 bis einschließlich 31)
$clean rtrim($binary"\x00..\x1F");
var_dump($clean);

?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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"

Siehe auch

  • trim() - Entfernt Whitespaces (oder andere Zeichen) am Anfang und Ende eines Strings
  • ltrim() - Entfernt Leerraum (oder andere Zeichen) vom Anfang eines Strings


9 BenutzerBeiträge:
- Beiträge aktualisieren...
NBS Studio
22.02.2010 14: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
22.02.2010 14: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
22.01.2010 14: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
5.04.2008 1: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
8.05.2006 15: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.02.2006 23: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
16.01.2005 9: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>&nbsp;    \n\t&nbsp;<br><br /><br>&nbsp;    \r\r&nbsp;<br>\r<br /><br>\r&nbsp;    &nbsp;\n<br>      <br />\t";

$cuts = array('\n','\r','\t',' ',' ','&nbsp;','<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
20.08.2003 3: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
6.06.2003 3: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.
?>



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)