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

    Quote con espressioni regolari

    Io ho quest codice che mi traduce quello che c'è scritto tra [quote=lorenzo]testo da quoatare[\quote] in un testo quotato...

    $testo = preg_replace("[\[quote=(.*?)\](.*?)\[/quote\]]", " <div align=justify>
    <blockquote>\\1".":
    "."<font color=#888888>\\2</font> </blockquote></div>", $testo);


    va tutto bene fino a quando nel testo non trovo un "\n" cioè andare a capo... in quel caso non funziona... come posso fare?

  2. #2
    "/[\[quote=(.*?)\]([^\a]+)\[\/quote\]]/i"
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Grazie mille... ci stavo perdendo il periodo migliore della mia vita...

  4. #4
    e continuerai se non scrivi questo .. ho sbgliato
    "/[\[quote=(.*?)\]([^\a]+?)\[\/quote\]]/i"
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Funzionava comunque... a cosa serve quel punto di domanda forse non mi oprende i caratteri speciali?

  6. #6
    tu mettilo, serve a considerare anche i quote innestati
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    ho un problema simile...
    Cioè io non so se c'è un quote, potrebbe esserci qualsiasi altro tag... Quindi ho bisogno che con l'espressione mi trovo ( come per un quote ci vuole un quote preceduto da un / ) due tags identici, di cui il secondo sia preceduto da uno slash.
    Quello che sono riuscito a confabulare è:

    preg_replace('|\[(.+)=\'(.+)\'\]([^\a]+)\[(.+)\]|i', '<\\1 \\2>\\3</\\4>', $where);

    Come vedete con i (.+) non c'è distinzione tra quello che trova... Mi potete aiutare?
    PaTeR
    From Ban to Life

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    34
    Mi pare che funzioni così
    codice:
    // l'espressione regolare
    $regexp = '/\\[([^=]*)=([^\\]]*)](.*?)\\[\\/\\1\\]/s';
    
    // la stringa di prova
    $string = "[qualcosa=qualcos'altro]dentro a qualcosa[/qualcosa]questo non si tocca[un'altra cosa=cosa]detro ci sta un tag ignorato [tag ignorato=quello che vuoi]appunto[/tag ignorato] è ignorato[/un'altra cosa]";
    
    // sostituzione
    $replaced = preg_replace($regexp, '<$1=$2>$3</$1>',$string);
    
    //test
    echo "$replaced\n$string";

  9. #9
    Grazie ferrot, provo subito!
    PaTeR
    From Ban to Life

  10. #10
    Originariamente inviato da ferrot
    codice:
    // l'espressione regolare
    $regexp = '/\\[([^=]*)=([^\\]]*)](.*?)\\[\\/\\1\\]/s';
    Funziona, funziona

    Senti, tanto per capirla mewglio, non me lo potresti spiegare velocemente come funziona quella espressione regolare?
    PaTeR
    From Ban to Life

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.