Visualizzazione risultati 1 fino 2 di 2

Discussione: parola chiave minuscolo e maiuscolo

  1. #1
    Guest

    Predefinito parola chiave minuscolo e maiuscolo

    Salve a tutti, sto costruendo un motore di ricerca... e per questo mi hanno aiutato a fare un sistema che evidenzia la parola chiave sia nel titolo, che nella descrizione che nell'url se quella parola è la stessa digitata dall'utente, insomma, come google... il problema è che c'è distinzione tra minuscolo e maiuscolo, se uno digita "facebook" evidenzia solo l'url, e non anche titolo e descrizione dove Facebook è scritto in maiuscolo. Vorrei che non ci fosse distinzione, ma se la parola è quella la evidenzia, anche se è minuscola o maiuscola... ecco la parte di codice che uso... Grazie mille

    Codice PHP:
    var titlee=data.Title;
    var
    diss=data.Description;
    var
    urll=data.Url;
    var
    key=keyword;
    var
    array_key=key.split("%20");
    var
    array_dis=diss.split(" ");
    var
    dis="";

    for(
    i = 0; i < array_dis.length; i++) {
    var
    word_y=word_n="";
    for(
    k = 0; k < array_key.length; k++) {
    if (
    array_dis[i].match(array_key[k]))
    word_y=array_dis[i].replace(array_key[k], "<b>"+array_key[k]+"</b>");
    else
    word_n=array_dis[i];
    }

    if (
    word_y)
    dis=dis+" "+word_y;
    else
    dis=dis+" "+word_n;
    }

    dis=dis.substring(1, dis.length);

    var
    array_title=titlee.split(" ");
    var
    title="";

    for(
    i = 0; i < array_title.length; i++) {
    var
    word_y=word_n="";
    for(
    k = 0; k < array_key.length; k++) {
    if (
    array_title[i].match(array_key[k]))
    word_y=array_title[i].replace(array_key[k], "<b>"+array_key[k]+"</b>");
    else
    word_n=array_title[i];
    }

    if (
    word_y)
    title=title+" "+word_y;
    else
    title=title+" "+word_n;
    }

    title=title.substring(1, title.length);
    var
    array_url=urll.split("/");
    var
    url="";

    for(
    i = 0; i < array_url.length; i++) {
    var
    word_y=word_n="";
    for(
    k = 0; k < array_key.length; k++) {
    if (
    array_url[i].match(array_key[k]))
    word_y=array_url[i].replace(array_key[k], "<b>"+array_key[k]+"</b>");
    else
    word_n=array_url[i];
    }

    if (
    word_y)
    url=url+"/"+word_y;
    else
    url=url+"/"+word_n;
    }

    url=url+"/";
    url=url.substring(1, url.lastIndexOf("/")+1);
    url_cont+=url+",";

    array_url_cont=url_cont.split(',')
    Ultima modifica di dreadnaut : 29-02-2012 alle ore 14.05.39 Motivo: + leggibilità codice

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    la sostituizione viene effettuata da queste righe
    Codice:
          word_y=array_dis[i].replace(array_key[k], "<b>"+array_key[k]+"</b>");
    ma la funzione replace() su una stringa è case-sensitive. Puoi modificarla per usare un'espressione regolare, ma ti devi assicurare che la parola che cerchi non contenga caratteri "strani"

    Codice:
      // escape dei caratteri speciali per una espressione regolare
      var cerco = array_key[k].replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
    
      // nuova ricerca, globale e case insensitive
      var re = new RegExp('/' + cerco + '/',"gi");
    
      // sostituzione, come sopra ma cercando l'espressione re invece della parola esatta
      word_y=array_dis[i].replace(re, "<b>"+array_key[k]+"</b>");
    Non ho possibilità di provare il codice sopra, ma se ci sono errori appariranno nella console (ctrl-shift-j su firefox, F12 su IE -occhio che ci saranno errori non relativi allo script, svuota l'elenco prima!)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •