Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371

    Esclusione di una stringa in espressione regolare

    La mia base di partenza funzionante è questa:

    codice:
    $variabile = preg_replace("/<span style=\"text-decoration: underline;\">([^<]*)<\/span>/si","<u>\$1</u>",$variabile);
    Questo frammento di codice mi riconosce il contenuto del tag <span> con lo style "underline" e me lo sostituisce con i (deprecati ma comodi per il resto dell'elaborazione) tag <u>


    Ora questo pezzo di codice non mi basta più perché, all'interno del tag span potrei avere un tag [b], [i] o, semplicemente "1 < 2".

    Vorrei migliorare questa funzione escludendo solo tag <span> all'interndo di questo. Ho provato con questa variante

    codice:
    "/<span style=\"text-decoration: underline;\">([^(<span)]*)<\/span>/si"
    Ma non riconosce nessuna stringa. Bazzicando per internet, ho trovato questa soluzione

    codice:
    "/<span style=\"text-decoration: underline;\">((?!.*<span).*)<\/span>/si"
    Che riconosce una stringa, ma la sostituzione viene fatta alla "membro di segugio", non in tutte le occorrenze, e tagliando la parte del testo dentro il tag.


    (le espressioni regolari ho un po' di difficoltà a tirarci fuori le gambe)
    A volte penso che, nel darci l'intelletto, la natura sia stata più sadica che generosa.

  2. #2
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371

    Re: Esclusione di una stringa in espressione regolare

    Non ne sto cavando le gambe...

    Questo

    codice:
    /<span style=\"text-decoration: underline;\">((?!<span))<\/span>/si
    Non trova niente.

    Quest'altro

    codice:
    /<span style=\"text-decoration: underline;\">(.*(?!<span).*)<\/span>/si
    trova, ma ignora il fatto che dentro al tag ci sia la stringa "<span"

    Forse le espressioni regolari non sono abbastanza potenti per quello che vorrei fare io
    A volte penso che, nel darci l'intelletto, la natura sia stata più sadica che generosa.

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova cosi

    Codice PHP:
    <?php
    $variabile 
    "<span style=\"text-decoration: underline;\">[b]coucou
    [/b]</span>"
    ;
    //$variabile = "<span style=\"text-decoration: underline;\">coucou</span>";

    $variabile preg_replace("/<span style=\"text-decoration: underline;\">(.*)<\/span>/si","<u>\$1</u>",$variabile);

    print 
    $variabile;
    ?>
    Da me dà : <u>coucou
    </u>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371
    Originariamente inviato da badaze
    Prova cosi

    Codice PHP:
    <?php
    $variabile 
    "<span style=\"text-decoration: underline;\">[b]coucou
    [/b]</span>"
    ;
    //$variabile = "<span style=\"text-decoration: underline;\">coucou</span>";

    $variabile preg_replace("/<span style=\"text-decoration: underline;\">(.*)<\/span>/si","<u>\$1</u>",$variabile);

    print 
    $variabile;
    ?>
    Da me dà : <u>coucou
    </u>
    Purtroppo neanche questo funziona.

    Se lo provi con una stringa come questa
    codice:
    <span style="text-decoration: underline;"><span style="text-decoration: line-through;">Test</span> evidenziato <span style="text-decoration: line-through;">YAHOOOOO</span></span></p>
    salta tutta la parte in mezzo e prende solo l'inizio e la fine
    A volte penso che, nel darci l'intelletto, la natura sia stata più sadica che generosa.

  5. #5
    Utente di HTML.it L'avatar di Reiuky
    Registrato dal
    Jul 2008
    Messaggi
    371
    Risolto.

    Da programma, usando solo substr e strpos.

    Molto più semplice e immediato delle espressioni regolari.
    A volte penso che, nel darci l'intelletto, la natura sia stata più sadica che generosa.

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.