Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Regex adatta per pulire testo

    Salve a tutti, ogni tanto qualche problema ce l'ho anche io

    Sono un pò arrugginito con le regex, e mi trovo nella situazione di non poterne farne a meno..

    In pratica devo sostituire un gran numero di caratteri, tag e altro testo contenuto tra "" ma non riesco a trovare il modo.

    Avevo utilizzato questa:

    Codice PHP:
    $stringa=preg_replace("","",$stringa); 
    ma non funziona.

    Qualcuno riesce a dirmi la regex corretta?

    N.B. Il macello che devo togliere e quella serie di direttive che word inserisce all'inizio del documento e che, passato appunto da word ad un'interfaccia wysiwyg si porta dietro!

  2. #2
    Ciao,
    prova con:
    codice:
    
    
    Administrator of NAMDesign.Net

  3. #3
    Scusate se mi intrometto ma manca sia il catattere di inizio e fine stringa regexp, sia la direttiva per indicare che a ricerca la deve fare su più righe.
    In più inserirei degli escape per evitare che i caratteri XML possano interferire con il corretto funzionamento dell'espressione.

    Io scriverei così:
    Codice PHP:
    $regexp "#\\<\\!\\-\\-\\[if gte mso 9\\]\\>\\<xml\\>(.*)\\<\\!\\-\\-\\[endif\]\\-\\-\\>#is";
    $stringa preg_replace($regexp""$stringa); 
    Vedi un po' se così funziona??
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #4
    Non servono tutti quei backslash, l'unico carattere speciale e' la parentesi quadra (e nell'ultima non l'hai messo ). Poi sempre meglio mettere il quantificatore non-greedy per questo genere di pattern.

    codice:
    ##is

  5. #5
    Originariamente inviato da k.b
    Non servono tutti quei backslash, l'unico carattere speciale e' la parentesi quadra (e nell'ultima non l'hai messo ).
    Deve averlo tagliato il forum: hai visto che bisogna sempre metterli doppi i backslash, no?
    Per l resto, la mia regexp non è uguale a quella che hai messo te?
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #6
    A parte il quantificatore non greedy si, ma il pattern diventa illeggibile se metti tutti quei backslash. E' importante metterli quando servono, non "tanto per".

  7. #7
    Utente di HTML.it L'avatar di lloyd27
    Registrato dal
    Mar 2006
    Messaggi
    256
    Io senza usare espressioni regolari farei
    Codice PHP:

    $startString 
    '<!--[if gte mso 9]><xml>';
    $endString '';

    $string substr($stringstrpos($string$startString) + strlen($startString), -* (strlen($string) - strpos($string$endString))); 
    I parametri del substr sono
    1 - la stringa dove cercare
    2 - la posizione da dove iniziare a prendere il testo, ottenuta sommando il risultato di strpos e la lunghezza della strinza iniziale
    3 - la posizione a cui interrompere il "ritaglio" del testo, ottenuta sottraendo alla lunghezza della stringa totale la posizione della stringa finale, e moltiplicando per -1 così da avere un numero negativo (ovvero tot caratteri dalla fine della stringa per substr).

    Spero di essere stato chiaro...

  8. #8
    E dovrebbe essere piu' chiaro e semplice di una regexp?

  9. #9
    Infatti non capisco neanche io perché fare una cosa del genere quando con una espressione regolare si risolverebbe tutto.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  10. #10
    Alla fine ho utilizzato la soluzione di k.b. (che come al solito ci azzecca sempre )

    Codice PHP:
    preg_replace("##is","",$stringa
    Però ora vorrei capire come axx leggere sta 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 © 2025 vBulletin Solutions, Inc. All rights reserved.