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

Добавлено: 27 Июля 2018 21:41:37 Добавил: Андрей Ковальчук

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 '

Добавлено: 27 Июля 2018 21:40:38 Добавил: Андрей Ковальчук

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"

Добавлено: 27 Июля 2018 21:39:44 Добавил: Андрей Ковальчук

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

Добавлено: 27 Июля 2018 21:38:53 Добавил: Андрей Ковальчук

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>'

Добавлено: 27 Июля 2018 21:38:14 Добавил: Андрей Ковальчук

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

Добавлено: 27 Июля 2018 21:35:30 Добавил: Андрей Ковальчук

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

Добавлено: 27 Июля 2018 21:34:11 Добавил: Андрей Ковальчук

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 '

Добавлено: 27 Июля 2018 21:33:17 Добавил: Андрей Ковальчук

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

Добавлено: 27 Июля 2018 21:32:17 Добавил: Андрей Ковальчук

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

Добавлено: 27 Июля 2018 21:31:26 Добавил: Андрей Ковальчук

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']

Добавлено: 27 Июля 2018 21:30:44 Добавил: Андрей Ковальчук

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;
}

Добавлено: 27 Июля 2018 21:30:05 Добавил: Андрей Ковальчук

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'

Добавлено: 27 Июля 2018 21:29:35 Добавил: Андрей Ковальчук

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'

Добавлено: 27 Июля 2018 21:28:36 Добавил: Андрей Ковальчук

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
'-=-=-=-=-=-=-=-=-=-='

Добавлено: 27 Июля 2018 21:27:40 Добавил: Андрей Ковальчук