Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema con regex

  1. #1

    Problema con regex

    Salve, ogni tanto chiedi aiuto anche io.

    Devo intercettare da una stringa con contenuto vario (testo, caratteri speciali, tag e altro) una data parola all'interno.

    Non riesco a tirar fuori la regex corretta.

    La parola cercata NON deve avere nulla attorno...

    Casi favorevoli
    Nel testo questa è la parola che mi interessa

    Casi non favorevoli
    Nel testo Link è la parola che non mi interessa

    Ovviamente nel primo caso devo intercettare la parola, nel secondo no!

    Come faccio?

    Grazie mille!

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Cosa intendi per "non deve avere nulla attorno"? Una parola delimitata da spazi?
    In questo caso preg_match('/\sparola\s/',$testo);

  3. #3
    Si una parola delimitata da spazi, ma che può essere per esempio tra tag b o strong...e soprattutto la parola stessa può avere spazi al suo interno

    Così già funziona, ma è da affinare un pò meglio.

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Quindi la parola cercata puo' far parte del testo di un tag, ma non puo far parte dei suoi attributi?

    Comincia con stabilire che cosa ci puo' essere intorno a quella parola. Ad esempio se fai:
    /[\s>](parola)[\s<]/
    ci sara' un match nelle frasi: parola, bla bla parola bla
    e niente match in <a href='parola'>

  5. #5
    Allora per farla breve, il mio obiettivo è sostituire delle determinate parole (o stringhe) trovate in un testo vario (html, testo, carattari speciali ecc ecc) con un link...

    se nel testo trovo la parola:

    testo OPPURE testo OPPURE Testo

    La voglio sostituire con Testo

    Ovviamente se la parola "testo" è all'interno di un link non la devo convertire in link.

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    potresti provare con
    /(?![^<]+>)(parola)(?![^<]+>)(?!<\/a>)/

    (non ci sono spazi prima delle 3 chiusure delle parentesi, li aggiunge il forum)

  7. #7
    Perfetto funziona.

    Ora la parte più difficile.


    Che vor dì sto macello!

  8. #8
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Si tratta di assertions, le trovi sul manuale. Se impari queste, diventi padrone delle regex

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 © 2024 vBulletin Solutions, Inc. All rights reserved.