JavaScript strncasecmp function
A JavaScript equivalent of PHP’s strncasecmp
function strncasecmp (argStr1, argStr2, len) {
// http://kevin.vanzonneveld.net
// + original by: Saulo Vallory
// + input by: Nate
// + bugfixed by: Onno Marsman
// % note: Returns < 0 if str1 is less than str2 ; > 0 if str1 is greater than str2 , and 0 if they are equal.
// * example 1: strncasecmp('Price 12.9', 'Price 12.15', 2);
// * returns 1: 0
// * example 2: strncasecmp('Price 12.09', 'Price 12.15', 10);
// * returns 2: -1
// * example 3: strncasecmp('Price 12.90', 'Price 12.15', 30);
// * returns 3: 8
// * example 4: strncasecmp('Version 12.9', 'Version 12.15', 20);
// * returns 4: 8
// * example 5: strncasecmp('Version 12.15', 'Version 12.9', 20);
// * returns 5: -8
var diff, i = 0;
var str1 = (argStr1 + '').toLowerCase().substr(0, len);
var str2 = (argStr2 + '').toLowerCase().substr(0, len);
if (str1.length !== str2.length) {
if (str1.length < str2.length) {
len = str1.length;
if (str2.substr(0, str1.length) == str1) {
return str1.length - str2.length; // return the difference of chars
}
} else {
len = str2.length;
// str1 is longer than str2
if (str1.substr(0, str2.length) == str2) {
return str1.length - str2.length; // return the difference of chars
}
}
} else {
// Avoids trying to get a char that does not exist
len = str1.length;
}
for (diff = 0, i = 0; i < len; i++) {
diff = str1.charCodeAt(i) - str2.charCodeAt(i);
if (diff !== 0) {
return diff;
}
}
return 0;
}
Example 1
strncasecmp('Price 12.9', 'Price 12.15', 2);
Should return
0
Example 2
strncasecmp('Price 12.09', 'Price 12.15', 10);
Should return
-1
Example 3
strncasecmp('Price 12.90', 'Price 12.15', 30);
Should return
8
JavaScript stristr function
A JavaScript equivalent of PHP’s stristr
function stristr (haystack, needle, bool) {
// http://kevin.vanzonneveld.net
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfxied by: Onno Marsman
// * example 1: stristr('Kevin van Zonneveld', 'Van');
// * returns 1: 'van Zonneveld'
// * example 2: stristr('Kevin van Zonneveld', 'VAN', true);
// * returns 2: 'Kevin '
var pos = 0;
haystack += '';
pos = haystack.toLowerCase().indexOf((needle + '').toLowerCase());
if (pos == -1) {
return false;
} else {
if (bool) {
return haystack.substr(0, pos);
} else {
return haystack.slice(pos);
}
}
}
Example 1
stristr('Kevin van Zonneveld', 'Van');
Should return
'van Zonneveld'
Example 2
stristr('Kevin van Zonneveld', 'VAN', true);
Should return
'Kevin '
JavaScript stripslashes function
A JavaScript equivalent of PHP’s stripslashes
function stripslashes (str) {
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: Ates Goral (http://magnetiq.com)
// + fixed by: Mick@el
// + improved by: marrtins
// + bugfixed by: Onno Marsman
// + improved by: rezna
// + input by: Rick Waldron
// + reimplemented by: Brett Zamir (http://brett-zamir.me)
// + input by: Brant Messenger (http://www.brantmessenger.com/)
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
// * example 1: stripslashes('Kevin\'s code');
// * returns 1: "Kevin's code"
// * example 2: stripslashes('Kevin\\\'s code');
// * returns 2: "Kevin\'s code"
return (str + '').replace(/\\(.?)/g, function (s, n1) {
switch (n1) {
case '\\':
return '\\';
case '0':
return '\u0000';
case '':
return '';
default:
return n1;
}
});
}
Example 1
stripslashes('Kevin\'s code');
Should return
"Kevin's code"
Example 2
stripslashes('Kevin\\\'s code');
Should return
"Kevin\'s code"
JavaScript stripos function
A JavaScript equivalent of PHP’s stripos
function stripos (f_haystack, f_needle, f_offset) {
// http://kevin.vanzonneveld.net
// + original by: Martijn Wieringa
// + revised by: Onno Marsman
// * example 1: stripos('ABC', 'a');
// * returns 1: 0
var haystack = (f_haystack + '').toLowerCase();
var needle = (f_needle + '').toLowerCase();
var index = 0;
if ((index = haystack.indexOf(needle, f_offset)) !== -1) {
return index;
}
return false;
}
Example 1
stripos('ABC', 'a');
Should return
0
JavaScript strip_tags function
A JavaScript equivalent of PHP’s strip_tags
function strip_tags (input, allowed) {
// http://kevin.vanzonneveld.net
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: Luke Godfrey
// + input by: Pul
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Onno Marsman
// + input by: Alex
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: Marc Palau
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: Brett Zamir (http://brett-zamir.me)
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Eric Nagel
// + input by: Bobby Drake
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Tomasz Wesolowski
// + input by: Evertjan Garretsen
// + revised by: Rafał Kukawski (http://blog.kukawski.pl/)
// * example 1: strip_tags('<p>Kevin</p> <br /><b>van</b> <i>Zonneveld</i>', '<i><b>');
// * returns 1: 'Kevin <b>van</b> <i>Zonneveld</i>'
// * example 2: strip_tags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>');
// * returns 2: '<p>Kevin van Zonneveld</p>'
// * example 3: strip_tags("<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>", "<a>");
// * returns 3: '<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>'
// * example 4: strip_tags('1 < 5 5 > 1');
// * returns 4: '1 < 5 5 > 1'
// * example 5: strip_tags('1 <br/> 1');
// * returns 5: '1 1'
// * example 6: strip_tags('1 <br/> 1', '<br>');
// * returns 6: '1 1'
// * example 7: strip_tags('1 <br/> 1', '<br><br/>');
// * returns 7: '1 <br/> 1'
allowed = (((allowed || "") + "").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
}
Example 1
strip_tags('<p>Kevin</p> <br /><b>van</b> <i>Zonneveld</i>', '<i><b>');
Should return
'Kevin <b>van</b> <i>Zonneveld</i>'
Example 2
strip_tags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>');
Should return
'<p>Kevin van Zonneveld</p>'
Example 3
strip_tags("<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>", "<a>");
Should return
'<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>'
JavaScript strcoll function
A JavaScript equivalent of PHP’s strcoll
function strcoll (str1, str2) {
// http://kevin.vanzonneveld.net
// + original by: Brett Zamir (http://brett-zamir.me)
// + improved by: Brett Zamir (http://brett-zamir.me)
// - depends on: setlocale
// * example 1: strcoll('a', 'b');
// * returns 1: -1
this.setlocale('LC_ALL', 0); // ensure setup of localization variables takes place
var cmp = this.php_js.locales[this.php_js.localeCategories.LC_COLLATE].LC_COLLATE;
// return str1.localeCompare(str2); // We don't use this as it doesn't allow us to control it via setlocale()
return cmp(str1, str2);
}
Example 1
strcoll('a', 'b');
Should return
-1
JavaScript strcspn function
A JavaScript equivalent of PHP’s strcspn
function strcspn (str, mask, start, length) {
// http://kevin.vanzonneveld.net
// + original by: Brett Zamir (http://brett-zamir.me)
// * example 1: strcspn('abcdefg123', '1234567890');
// * returns 1: 7
// * example 2: strcspn('123abc', '1234567890');
// * returns 2: 3
start = start ? start : 0;
var count = (length && ((start + length) < str.length)) ? start + length : str.length;
strct: for (var i = start, lgth = 0; i < count; i++) {
for (var j = 0; j < mask.length; j++) {
if (str.charAt(i).indexOf(mask[j]) !== -1) {
continue strct;
}
}++lgth;
}
return lgth;
}
Example 1
strcspn('abcdefg123', '1234567890');
Should return
7
Example 2
strcspn('123abc', '1234567890');
Should return
3
JavaScript strchr function
A JavaScript equivalent of PHP’s strchr
function strchr (haystack, needle, bool) {
// http://kevin.vanzonneveld.net
// + original by: Philip Peterson
// - depends on: strstr
// * example 1: strchr('Kevin van Zonneveld', 'van');
// * returns 1: 'van Zonneveld'
// * example 2: strchr('Kevin van Zonneveld', 'van', true);
// * returns 2: 'Kevin '
return this.strstr(haystack, needle, bool);
}
Example 1
strchr('Kevin van Zonneveld', 'van');
Should return
'van Zonneveld'
Example 2
strchr('Kevin van Zonneveld', 'van', true);
Should return
'Kevin '
JavaScript strcmp function
A JavaScript equivalent of PHP’s strcmp
function strcmp (str1, str2) {
// http://kevin.vanzonneveld.net
// + original by: Waldo Malqui Silva
// + input by: Steve Hilder
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + revised by: gorthaur
// * example 1: strcmp( 'waldo', 'owald' );
// * returns 1: 1
// * example 2: strcmp( 'owald', 'waldo' );
// * returns 2: -1
return ((str1 == str2) ? 0 : ((str1 > str2) ? 1 : -1));
}
Example 1
strcmp( 'waldo', 'owald' );
Should return
1
Example 2
strcmp( 'owald', 'waldo' );
Should return
-1
JavaScript strcasecmp function
A JavaScript equivalent of PHP’s strcasecmp
function strcasecmp (f_string1, f_string2) {
// http://kevin.vanzonneveld.net
// + original by: Martijn Wieringa
// + bugfixed by: Onno Marsman
// * example 1: strcasecmp('Hello', 'hello');
// * returns 1: 0
var string1 = (f_string1 + '').toLowerCase();
var string2 = (f_string2 + '').toLowerCase();
if (string1 > string2) {
return 1;
} else if (string1 == string2) {
return 0;
}
return -1;
}
Example 1
strcasecmp('Hello', 'hello');
Should return
0
JavaScript str_split function
A JavaScript equivalent of PHP’s str_split
function str_split (string, split_length) {
// http://kevin.vanzonneveld.net
// + original by: Martijn Wieringa
// + improved by: Brett Zamir (http://brett-zamir.me)
// + bugfixed by: Onno Marsman
// + revised by: Theriault
// + input by: Bjorn Roesbeke (http://www.bjornroesbeke.be/)
// + revised by: Rafał Kukawski (http://blog.kukawski.pl/)
// * example 1: str_split('Hello Friend', 3);
// * returns 1: ['Hel', 'lo ', 'Fri', 'end']
if (split_length === null) {
split_length = 1;
}
if (string === null || split_length < 1) {
return false;
}
string += '';
var chunks = [],
pos = 0,
len = string.length;
while (pos < len) {
chunks.push(string.slice(pos, pos += split_length));
}
return chunks;
}
Example 1
str_split('Hello Friend', 3);
Should return
['Hel', 'lo ', 'Fri', 'end']
JavaScript str_shuffle function
A JavaScript equivalent of PHP’s str_shuffle
function str_shuffle (str) {
// http://kevin.vanzonneveld.net
// + original by: Brett Zamir (http://brett-zamir.me)
// * example 1: shuffled = str_shuffle("abcdef");
// * results 1: shuffled.length == 6
if (arguments.length === 0) {
throw 'Wrong parameter count for str_shuffle()';
}
if (str == null) {
return '';
}
str += '';
var newStr = '', rand, i = str.length;
while (i) {
rand = Math.floor(Math.random() * i);
newStr += str.charAt(rand);
str = str.substring(0, rand) + str.substr(rand + 1);
i--;
}
return newStr;
}
JavaScript str_rot13 function
A JavaScript equivalent of PHP’s str_rot13
function str_rot13 (str) {
// http://kevin.vanzonneveld.net
// + original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
// + improved by: Ates Goral (http://magnetiq.com)
// + bugfixed by: Onno Marsman
// + improved by: Rafał Kukawski (http://blog.kukawski.pl)
// * example 1: str_rot13('Kevin van Zonneveld');
// * returns 1: 'Xriva ina Mbaariryq'
// * example 2: str_rot13('Xriva ina Mbaariryq');
// * returns 2: 'Kevin van Zonneveld'
// * example 3: str_rot13(33);
// * returns 3: '33'
return (str + '').replace(/[a-z]/gi, function (s) {
return String.fromCharCode(s.charCodeAt(0) + (s.toLowerCase() < 'n' ? 13 : -13));
});
}
Example 1
str_rot13('Kevin van Zonneveld');
Should return
'Xriva ina Mbaariryq'
Example 2
str_rot13('Xriva ina Mbaariryq');
Should return
'Kevin van Zonneveld'
Example 3
str_rot13(33);
Should return
'33'
JavaScript str_replace function
A JavaScript equivalent of PHP’s str_replace
function str_replace (search, replace, subject, count) {
// http://kevin.vanzonneveld.net
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: Gabriel Paderni
// + improved by: Philip Peterson
// + improved by: Simon Willison (http://simonwillison.net)
// + revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
// + bugfixed by: Anton Ongson
// + input by: Onno Marsman
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + tweaked by: Onno Marsman
// + input by: Brett Zamir (http://brett-zamir.me)
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: Oleg Eremeev
// + improved by: Brett Zamir (http://brett-zamir.me)
// + bugfixed by: Oleg Eremeev
// % note 1: The count parameter must be passed as a string in order
// % note 1: to find a global variable in which the result will be given
// * example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
// * returns 1: 'Kevin.van.Zonneveld'
// * example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
// * returns 2: 'hemmo, mars'
var i = 0,
j = 0,
temp = '',
repl = '',
sl = 0,
fl = 0,
f = [].concat(search),
r = [].concat(replace),
s = subject,
ra = Object.prototype.toString.call(r) === '[object Array]',
sa = Object.prototype.toString.call(s) === '[object Array]';
s = [].concat(s);
if (count) {
this.window[count] = 0;
}
for (i = 0, sl = s.length; i < sl; i++) {
if (s[i] === '') {
continue;
}
for (j = 0, fl = f.length; j < fl; j++) {
temp = s[i] + '';
repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
s[i] = (temp).split(f[j]).join(repl);
if (count && s[i] !== temp) {
this.window[count] += (temp.length - s[i].length) / f[j].length;
}
}
}
return sa ? s : s[0];
}
Example 1
str_replace(' ', '.', 'Kevin van Zonneveld');
Should return
'Kevin.van.Zonneveld'
Example 2
str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
Should return
'hemmo, mars'
JavaScript str_repeat function
A JavaScript equivalent of PHP’s str_repeat
function str_repeat (input, multiplier) {
// http://kevin.vanzonneveld.net
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
// + improved by: Ian Carter (http://euona.com/)
// * example 1: str_repeat('-=', 10);
// * returns 1: '-=-=-=-=-=-=-=-=-=-='
var y = '';
while (true) {
if (multiplier & 1) {
y += input;
}
multiplier >>= 1;
if (multiplier) {
input += input;
}
else {
break;
}
}
return y;
}
Example 1
str_repeat('-=', 10);
Should return
'-=-=-=-=-=-=-=-=-=-='