Use PHP functions in JavaScript

JavaScript trim

Strips whitespace from the beginning and end of a string

1
2
3
4
56
7
8
9
1011
12
13
14
1516
17
18
19
2021
22
23
24
2526
27
28
29
3031
32
33
34
3536
37
38
39
4041
42
43
44
4546
47
48
49
50
function trim (str, charlist) {
    // Strips whitespace from the beginning and end of a string  
    // 
    // version: 909.322
    // discuss at: http://phpjs.org/functions/trim    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: mdsjack (http://www.mdsjack.bo.it)
    // +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
    // +      input by: Erkekjetter
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)    // +      input by: DxGx
    // +   improved by: Steven Levithan (http://blog.stevenlevithan.com)
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // *     example 1: trim('    Kevin van Zonneveld    ');    // *     returns 1: 'Kevin van Zonneveld'
    // *     example 2: trim('Hello World', 'Hdle');
    // *     returns 2: 'o Wor'
    // *     example 3: trim(16, 1);
    // *     returns 3: 6    var whitespace, l = 0, i = 0;
    str += '';
    
    if (!charlist) {
        // default list        whitespace = " \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";
    } else {
        // preg_quote custom list
        charlist += '';
        whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '$1');    }
    
    l = str.length;
    for (i = 0; i < l; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {            str = str.substring(i);
            break;
        }
    }
        l = str.length;
    for (i = l - 1; i >= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);
            break;        }
    }
    
    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}
external links: original PHP docs | raw js source

Examples

» Example 1

Running

1
trim('    Kevin van Zonneveld    ');

Should return

1
'Kevin van Zonneveld'

» Example 2

Running

1
trim('Hello World', 'Hdle');

Should return

1
'o Wor'

Dependencies

No dependencies, you can use this function standalone.

Open syntax issues

php.js uses JsLint to help us keep our code consistent and prevent some common bugs.

Eventually we want all code to pass or at least take into consideration most fixes suggested by JsLint, following this JsLint configuration we’ve decided on.


Authors

Thanks to the following developers, you get to have trim goodness in JavaScript.

Comments

Add Comment
Use:
[CODE]
your_stuff('here');
[/CODE]
for proper code formatting
By submitting code here you are allowing us to use it in php.js hence dual licensing it under the MIT and GPL licenses

Gravatar
zeroneta
Jan 5th Permalink

q  http://bgscript.com/jscore/script/core.js

Gravatar
zeroneta
Jan 5th Permalink

q  

1
2
3
4
5
_.trim = function( a, s )
{
        s = s == un ? '\s\n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000' : real( s );
        return ( a + '' ).replace( new _._.RegExp( '(^[' + s + ']*)|([' + s + ']*$)', 'g' ), '' );
}


1
2
3
4
$.real = function( a )
{
        return ( a + '' ).replace( /(\$|\^|\*|\(|\)|\-|\+|\||\\|\{|\[|\}|\]|\,|\.|\?|\/)/g, '\\$1' );
}

Gravatar
Kevin van Zonneveld
6 Oct '08 Permalink

q  @ Onno Marsmann: Fixed, thank you!

Gravatar
Onno Marsman
4 Oct '08 Permalink

q   Something like trim(16,1) does not work correctly.

Fix:
Add the following lines of code to the beginning of the function:

1
2
str += '';
charlist += '';

Gravatar
Kevin van Zonneveld
27 Aug '08 Permalink

q  @ Jack: That's a good idea, thank you, I've implemented it and credited you accordingly.

@ Ben W: I will have to study on that, thanks for the input

Gravatar
Kevin van Zonneveld
27 Aug '08 Permalink

q  @ 0x0: That's definitely something to pounder about. We did not in the first place, because one of the project goals is to keep functions as standalone as reasonably possible. This duplication seemed reasonable for a standalone trim.

Gravatar
Ben W
27 Aug '08 Permalink

q  Wouldn't it be better to use regex? Like one of these:

http://blog.stevenlevithan.com/archives/faster-trim-javascript

Gravatar
Jack
21 Aug '08 Permalink

q   we can avoid unnecessary string length computations by changing the "for" loop from

1
for (var i = 0; i &lt; str.length; i++)


to

1
for (var i = 0, l=str.length; i &lt; l; i++)


1
2
3
4
56
7
8
9
1011
12
13
14
1516
17
18
19
2021
22
23
24
25
function trim( str, charlist ) {
   
 
    var whitespace;
        if (!charlist) {
        whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
    } else {
        whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    }  
    for (var i = 0, l=str.length; i &lt; l; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(i);
            break;        }
    }
    for (i = str.length - 1; i &gt;= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);            break;
        }
    }
    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}

Gravatar
0x0
7 Aug '08 Permalink

q   If you also have rtrim and ltrim, you could just do this:

1
2
3
function trim(str, charlist) {
    return ltrim(rtrim(str, charlist), charlist);
}

Gravatar
DxGx
20 Mar '08 Permalink

q  

1
2
3
4
56
7
8
9
1011
12
13
14
1516
function trim (str) {
        var whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
        for (var i = 0; i &lt; str.length; i++) {
                if (whitespace.indexOf(str.charAt(i)) === -1) {
                        str = str.substring(i);                        break;
                }
        }
        for (i = str.length - 1; i &gt;= 0; i--) {
                if (whitespace.indexOf(str.charAt(i)) === -1) {                        str = str.substring(0, i + 1);
                        break;
                }
        }
        return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';}


Replace trim function by this code. Acoding to this site: it is faster: http://blog.stevenlevithan.com/archives/faster-trim-javascript

Gravatar
Kevin van Zonneveld
21 Feb '08 Permalink

q  @ Erkekjetter: Hi Erkekjetter, thanks for your input. I've found the time to recode the functions and updated php.js accordingly.

Gravatar
Erkekjetter
19 Feb '08 Permalink

q   The trim() function for PHP is described as
string trim ( string $str [, string $charlist ] )

In your trim(), rtrim() and ltrim() functions the second parameter charlist is missing. You might change that to have a equivalent function.


Contribute a New function