Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: funzione replace

  1. #1

    funzione replace

    'giorno a tutti,

    tempo addietro, credevo di aver risolto i miei problemi....invece

    ho questa funzione

    codice:
    function grassetto (stringa,parola) { 
    
    myString = parola;
    splitString = myString.split(" ");
    
    for(i=0; i<splitString.length; i++){
    
    if(splitString[i].length < 3 ){i++;}
    
    RE = new RegExp ("((?:^|>)[^<]*)("+splitString[i]+")(?![^<]*>)","gi")
    stringa = stringa.replace(RE,"$1<span class='motore'>$2<\/span>")
    
    }
    return document.write(stringa);
    }
    funziona perfettamente, se io gli passo una stringa senza interruzioni di linea.

    per esempio, se passo

    ciao io sono pippo

    tutto ok

    se invece la stringa è:


    ciao io
    sono pippo


    non funziona più, e mi da errore
    unterminated string literal

    la chiamata alla funzione è tipo

    codice:
    grassetto("ciao io sono pippo","pippo");
    come posso risolvere

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    per una ricerca multiline

    RE = new RegExp ("((?:^|> )[^<]*)("+splitString[i]+")(?![^<]*> )","gim")


    Ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Originariamente inviato da fcaldera
    per una ricerca multiline

    RE = new RegExp ("((?:^|> )[^<]*)("+splitString[i]+")(?![^<]*> )","gim")


    Ciao
    non è cambiato niente

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    ciao a tutti,

    lo scopo è quello di dare lo span con class="motore" alla parola (o frase) desiderata, che non deve essere all'interno di un tag. Giusto?
    Sicuramente c'è una RE che fa tutto in un colpo solo, ma per fagianismo io ne farei 2... una per mettere lo span a tutte le occorrenze cercate comprese quelle dentro i tag e una per togliere lo span dalle occorrenze denro i tag
    codice:
    function Grassetto(stringa,parola){
      var re = new RegExp('\\b('+parola+')\\b','ig')
      stringa2 = stringa.replace(re,'<span class="motore">$1</span>');
      re = new RegExp('(<[^<>]*?)<span class="motore">('+parola+')</span>([^<>]*?>)','ig');
      stringa2 = stringa2.replace(re,'$1$2$3');
      return stringa2
    }

  5. #5
    Originariamente inviato da willybit
    ciao a tutti,

    lo scopo è quello di dare lo span con class="motore" alla parola (o frase) desiderata, che non deve essere all'interno di un tag. Giusto?
    Sicuramente c'è una RE che fa tutto in un colpo solo, ma per fagianismo io ne farei 2... una per mettere lo span a tutte le occorrenze cercate comprese quelle dentro i tag e una per togliere lo span dalle occorrenze denro i tag
    codice:
    function Grassetto(stringa,parola){
      var re = new RegExp('\\b('+parola+')\\b','ig')
      stringa2 = stringa.replace(re,'<span class="motore">$1</span>');
      re = new RegExp('(<[^<>]*?)<span class="motore">('+parola+')</span>([^<>]*?>)','ig');
      stringa2 = stringa2.replace(re,'$1$2$3');
      return stringa2
    }
    non funziona, se la stringa è su 2 righe e se è su una riga sola non mette lo span e mi restituisce la stringa normale


    La funzione originale, funziona, ha solo il problema, che se la stringa è su 2 o più righe, mi da errore e non stampa nulla

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    potresti postare un esempio che non funziona?

  7. #7
    Originariamente inviato da willybit
    potresti postare un esempio che non funziona?
    le ho messe online, così è più semplice....spero

    funzione replace singolo

    funzione replace doppio



    subito sotto alla frase che si vede, ci dovrebbe essere, la stringa con il replace


    Ciao io sono pippo e il mio amico si chiama pluto


    per provare, ho messo 2 parole da ricercare "pippo" e "pluto"

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    come immaginavo

    i "ritorni a capo" sono nella stringa php
    in javascript non puoi scrivere una funzione su più righe così
    codice:
    grassetto("Ciao io sono
     pippo e il mio amico si chiama pluto","pippo pluto");
    il ritorno a capo in javascript è "\n"
    devi fare il replace in php dei ritorni a capo con \n ed ottenere
    codice:
    grassetto("Ciao io sono\n pippo e il mio amico si chiama pluto","pippo pluto");

  9. #9
    Originariamente inviato da willybit
    come immaginavo

    i "ritorni a capo" sono nella stringa php
    in javascript non puoi scrivere una funzione su più righe così
    codice:
    grassetto("Ciao io sono
     pippo e il mio amico si chiama pluto","pippo pluto");
    il ritorno a capo in javascript è "\n"
    devi fare il replace in php dei ritorni a capo con \n ed ottenere
    codice:
    grassetto("Ciao io sono\n pippo e il mio amico si chiama pluto","pippo pluto");
    infatti, me ne ero accorto, ma non saprei come fare il replace

    partendo da questa

    codice:
    function grassetto (stringa,parola) { 
    
    myString = parola;
    splitString = myString.split(" ");
    
    for(i=0; i<splitString.length; i++){
    
    if(splitString[i].length < 3 ){i++;}
    
    replace di \n
    
    RE = new RegExp ("((?:^|>)[^<]*)("+splitString[i]+")(?![^<]*> )","gim")
    stringa = stringa.replace(RE,"$1<span class='motore'>$2<\/span>")
    
    }
    return document.write(stringa);
    }
    come implemento ?

  10. #10
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    il replace lo devi fare in php!

    Io php non lo tocco più da anni... dovrebbe essere una cosa tipo
    codice:
    str_replace("\n","\\n", $tuastringaphp);
    casomai chiedi nel forum appropriato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.