downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

ucfirst> <substr
[edit] Last updated: Fri, 17 May 2013

view this page in

trim

(PHP 4, PHP 5)

trimDizgenin başındaki ve sonundaki boşlukları (veya diğer karakterleri) budar

Açıklama

string trim ( string $dizge [, string $karakterler ] )

Bu işlev dizge'nin başındaki ve sonundaki boşlukları budar. İkinci değiştirge olmaksızın trim() sadece aşağıdaki karakterleri budayacaktır:

  • " " (ASCII 32 (0x20)), sıradan boşluk.
  • "\t" (ASCII 9 (0x09)), sekme.
  • "\n" (ASCII 10 (0x0A)), satırsonu.
  • "\r" (ASCII 13 (0x0D)), satırbaşı.
  • "\0" (ASCII 0 (0x00)), NUL-bayt.
  • "\x0B" (ASCII 11 (0x0B)), dikey sekme.

Değiştirgeler

dizge

Budanacak dizge.

karakterler

Seçimlik olarak, karakterler değiştirgesi kullanılarak budanacak karakterler belirlenebilir. Basitçe budamak istediğiniz tüm karakterleri belirtin. Bir karakter aralığını .. kullanarak belirtebilirsiniz.

Dönen Değerler

Budanmış dizge.

Sürüm Bilgisi

Sürüm: Açıklama
4.1.0 İsteğe bağlı karakterler değiştirgesi eklendi.

Örnekler

Örnek 1 - trim() işlevinin kullanımı

<?php

$metin   
"\t\tBir kaç kelam :) ...  ";
$ikil "\x09Örnek dizge\x0A";
$selam  "Merhaba Dünya";
var_dump($metin$ikil$selam);

print 
"\n";

$kırpık trim($metin);
var_dump($kırpık);

$kırpık trim($metin" \t.");
var_dump($kırpık);

$kırpık trim($selam"aerMy");
var_dump($kırpık);

// $ikil'in başındaki ve sonundaki ASCII denetim karakterlerini budar
// (0'dan 31'e kadar, 0 ve 31 dahil)
$temiz trim($ikil"\x00..\x1F");
var_dump($temiz);

?>

Yukarıdaki örneğin çıktısı:

string(25) "            Bir kaç kelam :) ...  "
string(14) "    Örnek dizge
"
string(14) "Merhaba Dünya"

string(21) "Bir kaç kelam :) ..."
string(17) "Bir kaç kelam :)"
string(9) "haba Dün"
string(12) "Örnek dizge"

Örnek 2 - trim() işlevini dizi değerlerine uygulama

<?php
function değeri_buda(&$değer)
{
    
$değer trim($değer);
}

$meyve = array('elma','muz '' muşmula ');
var_dump($meyve);

array_walk($meyve'değeri_buda');
var_dump($meyve);

?>

Yukarıdaki örneğin çıktısı:

array(3) {
  [0]=>
  string(4) "elma"
  [1]=>
  string(4) "muz "
  [2]=>
  string(10) " muşmula "
}
array(3) {
  [0]=>
  string(4) "elma"
  [1]=>
  string(3) "muz"
  [2]=>
  string(8) "muşmula"
}

Ayrıca Bakınız

  • ltrim() - Dizgenin başındaki boşlukları (veya diğer karakterleri) budar
  • rtrim() - Dizgenin sonundaki boşlukları (veya diğer karakterleri) budar



ucfirst> <substr
[edit] Last updated: Fri, 17 May 2013
 
add a note add a note User Contributed Notes trim - [12 notes]
up
7
jubi at irc dot pl
9 years ago
To remove multiple occurences of whitespace characters in a string an convert them all into single spaces, use this:

<?

$text
= preg_replace('/\s+/', ' ', $text);

?>

------------
JUBI
http://www.jubi.buum.pl
up
4
ludko2 at gmail dot com
2 years ago
Non-breaking spaces can be troublesome with trim:

<?php
// turn some HTML with non-breaking spaces into a "normal" string
$myHTML = "&nbsp;abc";
$converted = strtr($myHTML, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES)));

// this WILL NOT work as expected
// $converted will still appear as " abc" in view source
// (but not in od -x)
$converted = trim($converted);

// &nbsp; are translated to 0xA0, so use:
$converted = trim($converted, "\xA0"); // <- THIS DOES NOT WORK

// EDITED>>
// UTF encodes it as chr(0xC2).chr(0xA0)
$converted = trim($converted,chr(0xC2).chr(0xA0)); // should work

// PS: Thanks to John for saving my sanity!
?>
up
4
Hayley Watson
8 years ago
Another way to trim all the elements of an array
<?php
$newarray
= array_map('trim', $array);
?>
up
2
HW
9 years ago
You can combine character ranges and individual characters in trim()'s second argument (ditto for ltrim and rtrim). All of the specified characters and ranges will be used concurrently (i.e., if a character on either end of the string matches any of the specified charaters or character ranges, it will be trimmed). The characters and character ranges can be in any order (except of course that the character ranges need to be specified in increasing order) and may overlap.
E.g., trim any nongraphical non-ASCII character:
trim($text,"\x7f..\xff\x0..\x1f");
up
3
Piopier
6 years ago
It may be useful to know that trim() returns an empty string when the argument is an unset/null variable.
up
1
seyednaser at gmail dot com
8 months ago
To show off the empty positions in a string by means of trim():

<?php
    $string
= "    Hello World!   ";
    echo
$string;
    echo
" Has : ".strlen($string)." letter(s). One by one according to the following:<br />";
    echo
"<br />".$rightt = strlen(ltrim($string)) - strlen(trim($string))." empty position(s) from right.";
    echo
"<br />".$leftt = strlen(rtrim($string)) - strlen(trim($string))." empty position(s) from left.<br />";
   
$length = strlen($string);
    for(
$x = 0; $x < $length; $x++){
   
$letter = substr($string, $x, 1);
        if(
$letter <> " ")
            echo
"<br />Position&nbsp;&nbsp; $x ===> &nbsp;&nbsp;".substr($string, $x, 1);
        else
            echo
"<br />Position&nbsp;&nbsp; $x ===> &nbsp;&nbsp; Empty";
    }   
?>

the output is:

Hello World! Has : 19 letter(s). One by one according to the following:

3 empty position(s) from right.
4 empty position(s) from left.

Position   0 ===>    Empty
Position   1 ===>    Empty
Position   2 ===>    Empty
Position   3 ===>    Empty
Position   4 ===>   H
Position   5 ===>   e
Position   6 ===>   l
Position   7 ===>   l
Position   8 ===>   o
Position   9 ===>    Empty
Position   10 ===>   W
Position   11 ===>   o
Position   12 ===>   r
Position   13 ===>   l
Position   14 ===>   d
Position   15 ===>   !
Position   16 ===>    Empty
Position   17 ===>    Empty
Position   18 ===>    Empty
up
1
dmr37 at cornell dot edu
8 years ago
If you want to check whether something ONLY has whitespaces, use the following:

<?php

if (trim($foobar)=='') {
   echo
'The string $foobar only contains whitespace!';
}

?>
up
0
syn-attack at devilzc0de dot org
3 months ago
I think this is my implementation of trim...

<?php
   
/*
     * Function: "trim"
     * @str = source
     * @charlist = list of characters to be trimmed from the source
     *
     * Author: syn-attack@devilzc0de.org
     * Full documentation in http://php.net/manual/en/function.trim.php
     */
   
function __trim($str, $charlist = '') {
       
$result = '';
       
/* list of forbidden chars to be trimmed */
       
$forbidden_list = array(" ", "\t", "\r", "\n", "\0", "\x0B");
       
        if (empty(
$charlist)) {
            for (
$i = 0; $i < strlen($str); $i++) {
                if ((
$str[$i] != $forbidden_list[0]) &&
                    (
$str[$i] != $forbidden_list[1]) &&
                    (
$str[$i] != $forbidden_list[2]) &&
                    (
$str[$i] != $forbidden_list[3]) &&
                    (
$str[$i] != $forbidden_list[4]) &&
                    (
$str[$i] != $forbidden_list[5])) {
                   
$result .= $str[$i];
                }
            }
        }
        else if (!empty(
$charlist)) {
           
$is_not_same = true;
           
            for (
$i = 0; $i < strlen($str); $i++) {
                for (
$j = 0; $j < strlen($charlist); $j++) {
                    if (
$str[$i] != $charlist[$j]) {
                       
$is_not_same = true;
                    }
                    else if (
$str[$i] == $charlist[$j]) {
                       
$is_not_same = false;
                        break;
                    }
                }
               
                if (
$is_not_same == true) {
                   
$result .= $str[$i];
                }
            }
        }
       
        return (
$result);
    }
   
   
$str = "Paulus Gandung Prakosa";
    echo
__trim($str);
?>
up
0
tbm.at.home.dot.nl
11 years ago
Windows uses two characters for definining newlines, namely ASCII 13 (carriage return, "\r") and ASCII 10 (line feed, "\n") aka CRLF. So if you have a string with CRLF's, trim() won't recognize them as being one newline. To solve this you can use str_replace() to replace the CRLF's with with a space or something.

<?php
// string with bunch of CRLF's
$my_string = "Liquid\r\nTension Experiment\r\n\r\n\r\n";

// replace CRLF's with spaces
$my_wonderful_string = str_replace("\r\n", " ", $my_string);
// would result in "Liquid Tension Experiment   "

// or just delete the CRLF's (by replacing them with nothing)
$my_wonderful_string = str_replace("\r\n", "", $my_string);
// would result in "LiquidTension Experiment"
?>
up
-1
gerjoo at gmail dot com
1 year ago
On my application I had several users submit what to me appeared as "empty strings", whereas in fact they were submitting the &shy; character.

Trim, by default, does not strip this character (Though arguably it should). The following code strips this character from your input:

<?php

// As the &shy; character is invisible we'll simply use the ASCII numeric representation, and decode via chr():
$string = trim($string, chr(173));

// If you wish to strip all occurences this will work:
$string = str_replace(chr(173), "", $string);

?>

Gerard
up
-1
josecruz at josecruz dot com dot br
4 years ago
A simple function to clear extra white spaces along a string.
<?php
function TrimStr($str)
{
   
$str = trim($str);
    for(
$i=0;$i < strlen($str);$i++)
    {

        if(
substr($str, $i, 1) != " ")
        {

           
$ret_str .= trim(substr($str, $i, 1));

        }
        else
        {
            while(
substr($str,$i,1) == " ")
          
            {
               
$i++;
            }
           
$ret_str.= " ";
           
$i--; // ***
       
}
    }
    return
$ret_str;
}
?>

[EDIT BY danbrown AT php DOT net: Contains a fix provided by (info AT deep-soft DOT com) to address the issue where "it deletes the first char after spaces (because of while)."]
up
-1
kafene
2 months ago
When you choose characters to trim, the defaults are replaced by those, so if you wish to trim the defaults in addition to some extras, you need to specify the defaults every time. Here is a little helper function that will trim the defaults, plus your additions:

<?php
function trim_plus($str, $chars = '') {
    return
trim($str, " \t\n\r\0\x0B$chars");
}

var_dump(trim(' a- ', '-')); # no changes
var_dump(trim(' a- ', '- ')); # works
var_dump(trim_plus(' a- ', '-')); # works
?>

 
show source | credits | sitemap | contact | advertising | mirror sites