Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 45
  1. #1

    Problema con doppio replace

    Ciao,
    ho all'interno di un database (id, nome, link) alcune parole su cui effettuare il replace...

    Posto un esempio, nel db ci sono due righe:

    id nome link
    1 nome cognome http://......
    2 nome http://.....

    A questo punto, se nel testo è presente una riga tipo:

    Sabato notte nome ha fatto......
    viene trasformata in
    Sabato notte nome ha fatto

    E fin qui tutto a posto...
    Il problema sorge quando si sovrappongono nome e cognome, la riga:
    Sabato notte nome cognome ha fatto......
    diventerebbe:
    Sabato notte <a href="link">nome cognome</a> ha fatto

    Ovviamente si sovrappongono i due replace.

    1. Come posso fare per evitare questo problema (la tabella con i testi da modificare sono molti, oltre 200).

    2. Come posso fare per lanciare il replace con un ciclo (tanto viene fatto all'inserimento della news e non al caricamento dell'articolo e non appesentirebbe troppo il server) che salti senza fare un replace del testo all'interno di un link?

    Grazie mille per chi sa dare una mano!

    P.s. poi ci penso io a regolare l'ordine di check per evitare che si controlli prima nome e poi nome cognome



  2. #2
    scusa ma nome e cognome come li identifichi? hai un elenco di nomi e cognomi da qualche parte che usi?

  3. #3
    Si, vengono inseriti da chi gestisce il sito...

    Se ad esempio nel testo c'è scritto... capodanno come link ci sarà la pagina con l'elenco dei capodanni.

    Se c'è però, capodanno 2006 deve mandare alla pagina capodanno_2006 (il link cmq lo legge da quella tabella).

    L'esempio è simbolico, è che non sono solo nomi e cognomi.

  4. #4
    Utente di HTML.it L'avatar di Robycz
    Registrato dal
    Jul 2002
    Messaggi
    245
    La prima idea che mi viene in mente...
    ti crei una specie di replace che salta tutto ciò che fa già parte di un link. Devono essere sostituite per prime le stringhe composte da più parole.
    InStr
    Replace.

  5. #5
    Originariamente inviato da Robycz
    La prima idea che mi viene in mente...
    ti crei una specie di replace che salta tutto ciò che fa già parte di un link. Devono essere sostituite per prime le stringhe composte da più parole.
    InStr
    Replace.
    Quello che mi chiedo è come identificare che una parola sia già stata sostituita e quindi è linkata....

  6. #6
    Utente di HTML.it L'avatar di Robycz
    Registrato dal
    Jul 2002
    Messaggi
    245
    I metodi sono tanti...
    ad es:
    cerchi la stringa da sostituire,
    a seconda della lunghezza del testo e della posizione della stringa
    if PosStringa<len(Testo)/2
    verifichi se prima della stringa c'è un "<a" non preceduto da "</a>"
    se trovi un "</a>" prima di un "<a" la verifica è conclusa: sostituisci
    else
    verifichi se dopo la stringa c'è un "</a>" non preceduto da "<a"
    se trovi un "<a" prima di un "</a>" la verifica è conclusa: sostituisci
    end if

  7. #7
    Utente di HTML.it L'avatar di Robycz
    Registrato dal
    Jul 2002
    Messaggi
    245
    ovviamente devi inziare a verificare che non sia linkata solo dopo che la sostituzione di una delle stringhe ha avuto luogo (Replace ritorna un valore...)



    ^^^^^^^^^^^^^^^^
    ora mi sono reso conto di una cosa che hai scritto:
    Quello che mi chiedo è come identificare che una parola sia già stata sostituita e quindi è linkata....

    tu ti devi rendere conto se una parola è linkata, quindi è già stata "sostituita"...
    giusto il contrario...

  8. #8
    Utente di HTML.it L'avatar di Robycz
    Registrato dal
    Jul 2002
    Messaggi
    245
    ola,
    tutto ok?

    Hai ordinato le stringhe da "linkare" a seconda del numero di parole (prima quelle con più parole poi le altre) o a seconda della loro lunghezza?
    Un trucco per ordinare le stringhe a seconda del numero di parole è quello di contare gli spazi, puoi fare così:
    codice:
    NumSpazi = Len(Stringa) - Len(Replace(Stringa, " ", ""))

  9. #9
    Ciao,
    alla fine ho fatto un lavoraccio sporchissimo e assurdo.

    Ho fatto in questo modo:

    Leggo nel database in ordine la prima parola da linkare.

    Controllo se c'è nel testo, se è presente spezzo la stringa tagliando anche la parola da sostituire.

    Controllo se c'è un </a> prima di un <a... Se non c'è metto il link, lego il link alla stringa precedente e al pezzo dopo.

    Update del database e redirect alla stessa pagina.....

    Una procedura schifosa, lenta e fatta male, pensa dove mette 100 link che sono 100 redirect....

  10. #10

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.