Regex che trova la parola nella pagina

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Questo codice mi trova la stessa parola nella pagina, ma solo qualcuna, es. se nella pagina ho 10 parole “casa” me ne trova solo qualcuna, non tutte 10.

JavaScript:
<script>
jQuery.fn.highlight = function(what, spanClass) {
  return this.each(function() {
    var container = this,
      content = container.innerHTML,
      pattern = new RegExp('(>[^<.]*)(' + what + ')([^<.]*)', 'ig'),
      replaceWith = '$1<span ' + (spanClass ? 'class="' + spanClass + '"' : '') + '">$2</span>$3',
      highlighted = content.replace(pattern, replaceWith);
    container.innerHTML = highlighted;
  });
}

var getUrlParameter = function getUrlParameter(sParam) {
  var sPageURL = decodeURIComponent(window.location.search.substring(1)),
    sURLVariables = sPageURL.split('&'),
    sParameterName,
    i;

  for (i = 0; i < sURLVariables.length; i++) {
    sParameterName = sURLVariables[i].split('=');

    if (sParameterName[0] === sParam) {
      return sParameterName[1] === undefined ? true : sParameterName[1];
    }
  }
};

jQuery(document).ready(function(){
  var search = '<?php echo get_search_query(); ?>';
  var fromsearch = '<?php $output = '';
if(isset($_GET['fromsearch']) && is_string($_GET['fromsearch'])) {
$output = $_GET['fromsearch'];
}
echo $output; ?>';

  if(search !== null && search !== ''){
   jQuery('body').highlight(search,'highlight');
      jQuery('#main article a').each(function(i,e){
        var newUrl =  jQuery(e).prop('href') + '?fromsearch=' + encodeURIComponent(search);
        this.href = newUrl;
      });
   }
  
   if(fromsearch !== null && fromsearch !== ''){
      jQuery('body').highlight(fromsearch,'highlight');
   }
});
</script>
 
Codice:
pattern = new RegExp('(>[^<.]*)(' + what + ')([^<.]*)', 'gmi'),
Premesso che ho dato per scontato che la regex expression sia corretta.

Tutto il codice completo compresa la tua modifica, in che file lo devo metter? Non mi ricordo più. :oops:
 
Ti lascio un esempio funzionante della cosa:
JavaScript:
let text = "Mr Blue has a blue house and a blue car Mr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue car";
let result = text.replace(/blue/gmi, "red");
console.log(result);
 
Ti lascio un esempio funzionante della cosa:
JavaScript:
let text = "Mr Blue has a blue house and a blue car Mr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue carMr Blue has a blue house and a blue car";
let result = text.replace(/blue/gmi, "red");
console.log(result);

Ho risolto con il plugin Revelanssi.
 

Discussioni simili