Highlighter //Repositório JavaScript

Descrição

Procura ocorrências de uma ou mais strings no texto e chama um callback para efetuar a troca.
Criado: 2006.01.13

Código (Download)

//+ Carlos R. L. Rodrigues
//@ http://jsfromhell.com/string/highlight [rev. #1]

String.prototype.highlight = function(f, c, i){
    var r = this, t = /([(){}|*+?.,^$\[\]\\])/g, i = !i ? "i" : "", rf = function(t, i){
        return r.lastIndexOf("<", i) > r.lastIndexOf(">", i) ? t : c(t, p);
    };
    for(var p = -1, l = (f = f instanceof Array ? f : [f]).length; ++p < l;)
        r = r.replace(new RegExp(f[p].replace(t, "\\\$1"), "gm" + i), rf);
    return r;
}

Exemplo (Exemplo)

<style type="text/css">
body{
    margin: 3px;
}
.bg0{
    color: #fff;
    font: bold 30px verdana;
    border: 1px solid #000;
    background: #f00;
}
.bg1{
    color: #0f0;
    background: #000;
    font-weight: bold;
}
.bg2{
    color: #00F;
    background: #FF0;
    font-weight: bold;
}
.bg3{
    color: #000;
    background: #eee;
    font-weight: bold;
}
</style>
<script type="text/javascript">
function c(s, i){
    return '<span class="bg' + i + '">' + s + '</span>';
}
var s = 'blabla <a href="http://jsfromhell.com">JSFromHell</a>';
document.write(s.highlight(["JS", "from", "o", "l"], c));
</script>

Ajuda

String.highlight(words: Array, replaceCallback: Function(s: String, i: Integer): string, [caseSensitive: Boolean = false]): String
Procura ocorrências de uma ou mais strings no texto e chama um callback para efetuar a troca. A função não procura dentro de tags html.
words
palavras que serão procuradas
replaceCallback
função que será chamada para cada ocorrência que for encontrada, recebe como primeiro parâmetro a palavra que foi encontrada, como segundo o índice dela na array que foi setada no parâmetro "words" e deve retornar uma string que será colocada no lugar da palavra encontrada
caseSensitive
indica se a busca deverá ser case-sensitive

Ranque (Votos: 13)

3.92