PHP str_replace & str_ireplace Function Alternative for JavaScript

arp14 JavaScript Tags: , , 0
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 & lt;sl;i++) {
        if (s[i] === '') {
            continue;
        }
        for (j = 0, fl = f . length;j & lt;fl;j++) {
            temp = s[i] + '';
            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
            s[i] = (temp) . split(f[j]) . join(repl);
            if (count & amp; & amp;
            s[i] !== temp) {
                this . window[count] += (temp . length - s[i] . length) / f[j] . length;
            }
        }
    }
    return sa ? s : s[0];
}

Leave a Reply

Note: Your email address will not be published. Required fields are marked *