• Bannato Super User

    @Giorgiotave said:

    Niente non va....che versione hai di phpbb?

    ho provato con

    $message = preg_replace("/</a>/", "", $message);

    C'è qualcosa che io non so e non capisco, chi me la spiega? 😄

    No, io non ce l'ho phpbb, io ho fatto con solo php, una cosa del genere:

    
    <?php
    //Questa è la tua stringa
    $message = "[url='http://www.giorgiotave.it/forum/']<acronym title='title random'>parola random</acronym> Pippo Pluto Topolino ";
    $message = preg_replace&#40;"/<.*?>/", "", $message&#41;;
    
    //quì mostro a video il risultato
    
    echo "questa è la stringa pulita
    
     $message";
    
    ?>
    

    Così a me va, esce solo "parola random" e tuto quello che non è tra < e > .

    Che cosa ti esce quando provi, qualche errore, oppure niente oppure non fa il lavoro che deve fare ?


  • Community Manager

    No non mi dice niente

    é strano...speriamo che di la rispondando 🙂


  • Super User

    @Giorgiotave said:

    Ecco una stringa

    <acronym title="title random">parola random</acronym>

    é possibile dirgli di estrapolare solo la "parola random" ?

    $pattern= '|(<acronym title=")(.+)(">)(.+)(</acronym>)|iu';

    $stringa = '<acronym title="title random">parola random</acronym>';

    $num_res = preg_match_all ($pattern, $stringa, $risultati);

    in $num_res hai il num delle corrispondenze; il $risultati hai un array:

    $risultati[ (numero corrispondenza) ][ (elementi corrispondenza) ]

    se non ho capito o il codice non va dimmi tutto 😛


  • Community Manager

    Provo con quel termine, comunque sia il link sia testo random cambiano sempre 🙂


  • User Attivo

    ma al posto di mettere i tag html non puoi mettere un tag [glossario][/glossario] e poi fare il replace (la sostituzione.. non so che nome abbia in php) tenendo conto di eliminare [glossario][/....]?
    non credo avendo il codice del phpbb sia cosa diffficile da implementare!
    ce la posso fare ank'io, se mi posti la parte di php interessata [ovviamente andando un po' a caso 😎 😎 ]. a me sembra la soluzione migliore


  • Community Manager

    @sms said:

    ma al posto di mettere i tag html non puoi mettere un tag [glossario][/glossario] e poi fare il replace (la sostituzione.. non so che nome abbia in php) tenendo conto di eliminare [glossario][/....]?
    non credo avendo il codice del phpbb sia cosa diffficile da implementare!
    ce la posso fare ank'io, se mi posti la parte di php interessata [ovviamente andando un po' a caso 😎 😎 ]. a me sembra la soluzione migliore

    E' un casino della madonna, non è solo un file.

    In phpbb.it stiamo cercando di farlo, è estate 🙂

    L'unicao cosa manca sto quote...


  • User

    Ciao Giorgio,
    prova questa è molto generico come regex:

    
    
    if &#40;preg_match&#40;'/<a&#91;^>&#93;*>&#40;&#91;^<&#93;*&#41;/', $subject, $regs&#41;&#41; &#123;
       $result = $regs&#91;1&#93;;
    &#125;
    
    

    Mentre se mi dici che il formato della stringa è sempre quello:

    
    if &#40;preg_match&#40;'/<a\\s&#91;^>&#93;*><acronym\\s&#91;^>&#93;*>&#40;&#91;^<&#93;*&#41;<\\/acronym><\\/a>/', $subject, $regs&#41;&#41; &#123;
    	$result = $regs&#91;1&#93;;
    &#125;
    
    

  • Community Manager

    Benvenuto Jeff e grazie per l'aiuto.

    Ora scappo a mangiare, poi provo questo tuo codice e vediamo se riesco a venirne fuori cavolo 😉

    Grazie Ancora 🙂


  • Super User

    Dunque..dato che il preg non funziona io propongo di utilizzare un codice più grezzo (mi appoggio al vostro codice):

    
    <?php
    //Questa è la tua stringa
    $message = "[url='http://www.giorgiotave.it/forum/']<acronym title='title random'>parola random</acronym> Pippo Pluto Topolino ";
    $message1 = explode&#40;">", $message&#41;;
    $message2 = explode&#40;"<", $message1&#91;2&#93;&#41;;
    $message = $message2&#91;0&#93;;
    
    //quì mostro a video il risultato
    
    echo "questa è la stringa pulita
    
     $message";
    
    ?>
    
    
    

    Non l'ho provato..provatelo voi..sono sicuro al 99% che funzionerà..se non funzione, magari c'è un piccolo errore. Purtroppo non ho tempo per testarlo da me 🙂

    è un pò + grezzo ma meno complicato e rischioso del preg


  • Bannato Super User

    Testato come PHP e funziona correttamente, (ma a me funzionava anche con il preg.

    Adesso non rimane che far provare a Giorgio su PHPBB.

    Speriamo sia la volta buona 😉

    Grazie comunque kerouac3001


  • Super User

    @Giorgiotave said:

    Ecco una stringa

    <acronym title="title random">parola random</acronym>

    é possibile dirgli di estrapolare solo la "parola random" ?

    Sei sicuro che la stringa dalla quale estrapolare la parola sia proprio quella?

    E se ne sei sicuro, ne sei solo sicuro oppure anche sicuro sicuro sicuro? 😄

    Potresti fare copia e incolla di un esempio reale del testo dal quale devi estrapolare la stringa?


  • Community Manager

    okey ragazzi, vi ringrazio ora forse insieme ce la faremo.

    Allora quello di jeff ritorna solo una parola Array, ed e' quello che si avvicina di piu

    Quello di kerouac3001 mi toglie tutto.

    Ora Low, vai qui http://www.giorgiotave.it/forum/viewtopic.php?t=3022 e quota il primo messaggio

    Guarda nel quote io devo eliminare quei caratteri html altrimenti posta e vedi cosa succede.

    Per eliminare il doppio quote (il phpbb mette due quote di fila e non elimina il primo) la stringa usata e'

    //inizio multiquote mod
    			
             &#123;
                $message = preg_replace&#40;'/&#40;\&#91;quote=&#40;.*?&#41;\&#93;&#40;&#40;.|\n&#41;*&#41;\&#91;\/quote\&#93;&#41;/si',"",$message&#41;;
    	         &#125;
                //fine multiquote mod 
    

    Grazie ragazzi, sto diventando matto oggi 😄


  • Super User

    Contenuto della stringa $text:

    
    [<acronym title="Provaforum è per voi amici.">Provaforum</acronym>](http://www.giorgiotave.it/forum/)
    
    

    Codice 1 (restituisce un array con tutte le parole trovate, perché presumo che di quelle stringhe ce ne possano essere più di una, in un messaggio):

    
    $regex = "/<a\s+&#91;^>&#93;*?><acronym\s+&#91;^>&#93;*?>&#40;&#91;^<&#93;*?&#41;</acronym>\s*</a>/si";
    preg_match_all &#40;$pattern, $text, $match&#41;;
    $word = $match&#91;1&#93;;
    
    print_r &#40;$word&#41;;
    
    

    Codice 2 (generico, toglie tutti i tag HTML e commenti SGML:

    
    $text = preg_replace &#40;"'<&#91;\/\!&#93;*?&#91;^<>&#93;*?>'S", "", $text&#41;;
    echo $text;
    
    

    Come al solito, non ho provato niente e probabilmente ci saranno decine di errori di sintassi. Ma il concetto dovrebbe funzionare.

    Aggiunto: in ogni caso, io non implementerei gli acronimi in quel modo. Creare direttamente i tag HTML a quel livello per poi essere costretti ad eliminarli successivamente non è un sistema molto logico né pulito.

    Io creerei un tag BBCode [acronym] [/acronym] ed userei quello, traducendolo in tag HTML solo al momento della pubblicazione finale.

    In questo modo quando fai il quote, invece di avere tra le scatole codice HTML hai codice BBCode, che non dà problemi.


  • Community Manager

    Ora provo il tuo metodo, vediamo come va.

    E si il bbcode e' il metodo piu pulito, ho trovato qualcosa in giro per il web e ora provero' ad implementare un mod, vi faccio sapere presto.


  • Super User

    In "Codice 1" c'è un evidente errore nel nome della variabile.

    Corretto:

    preg_match_all ($regex, $text, $match);


  • Super User

    Circa i problemi ad eliminare i quote, cos'è esattamente che bisogna ottenere?


  • Bannato User Attivo

    Esiste una specie di elenco di istruzioni a mò di mod per applicare il wiki glossario ad un phpbb qualsiasi?
    (o lo devo fare io) 😄


  • Bannato User Attivo

    Esiste una specie di elenco di istruzioni a mò di mod per applicare il wiki glossario ad un phpbb qualsiasi?
    (o lo devo fare io) 😄