Visualizzazione risultati 1 fino 27 di 27

Discussione: Problema con i quote

  1. #1
    Guest

    Predefinito Problema con i quote

    Dopo una lunga assenza (due settimane) da questo forum, rieccomi qua.

    Allora, sto creando da zero un forum (completamente validato al W3C ) e devo dire che procede abbastanza bene.

    Ora però è sorto un problema con i quote:

    In pratica sostituisco con eregi_replace la stringa
    [...QUOTE] (senza i puntini! i puntini servono per non farlo leggere al VBulletin come vero e proprio quote!) con un il codice HTML relativo in modo che appaia una piccola tabella con sfondo bianco.
    Con un altro eregi_replace sostituisco
    [/...QUOTE] con la chiusura della tabella.
    Fin qui nessun problema.
    Il problema però sorge se l'utente omette [/...QUOTE]!
    Qual'è il problema? La tabella resta aperta e, oltre a farmi fare in uqella pagina 7 warnings, rovina tutta la pagina, cosa ben + grave.
    Ora: come faccio a trasformare i quote in tabelle solo se sono stati chiusi nello stesso messaggio?
    Ultima modifica di Zorinik : 03-07-2006 alle ore 10.53.35

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Io uso questo:
    Codice PHP:
    $testo=preg_replace("#\[quote\](.+?)\[/quote\]#si", "<div style=\"background-color: #555555; width: 75%; border-style: groove;\" align=\"justify\">\\1</div>", $testo);
    Però non mi fa fare dei quote nidificati.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da funcool
    Però non mi fa fare dei quote nidificati.

    Beh... io vorrei anche poter fare i quote nidificati...

  4. #4
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da Zorinik
    Beh... io vorrei anche poter fare i quote nidificati...
    mmmm
    cambia qualcosa così?
    Codice PHP:
    $stringa = preg_replace("#\[quote\]([^(\[\/quote\])]+)\[\/quote\]#is","<div style='background-color:red; border: 1px inset black;'>\\1</div>",$stringa);

  5. #5
    Guest

    Predefinito

    sostituisci al + un *, cosi lo uso io e fa anche i quote nidificati.

    @Leo: cosi non dovrebbe accettare proprio i quote se ce ne sono altri dentro
    Ultima modifica di jostock : 03-07-2006 alle ore 11.09.43

  6. #6
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da jostock
    sostituisci al + un *, cosi lo uso io e fa anche i quote nidificati.
    A quello che ho scritto io o a quello che ha scritto Leo91?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  7. #7
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da funcool
    A quello che ho scritto io o a quello che ha scritto Leo91?
    A quello che hai scritto te...in effetti mi era venuto in mente

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da jostock
    sostituisci al + un *, cosi lo uso io e fa anche i quote nidificati.
    mi riferivo a quello di funcool.

  9. #9
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Ho provato ma non mi funziona...
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  10. #10
    Guest

    Predefinito

    Citazione Originalmente inviato da jostock
    sostituisci al + un *, cosi lo uso io e fa anche i quote nidificati.

    @Leo: cosi non dovrebbe accettare proprio i quote se ce ne sono altri dentro
    No. Non va neanche così...

    O ci metto '+' o '*' da lo stesso risultato.

    In pratica mi visualizza il primo quote come dovrebbe farlo, cioè giustamente. Ma il secondo me lo visualizza in maniera testuale.
    In pratica così:

    Messaggio 1
    [..quote]
    Messaggio 2
    [../quote]

    Uff...
    Ultima modifica di Zorinik : 03-07-2006 alle ore 11.36.01

  11. #11
    Guest

    Predefinito

    Codice PHP:
    $txt = preg_replace("#\[QUOTE\](.*?)\[\/QUOTE\]#is", "<div>\\1</div>", $txt);
    questo è quello che uso io funzionante...

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da jostock
    Codice PHP:
    $txt = preg_replace("#\[QUOTE\](.*?)\[\/QUOTE\]#is", "<div>\\1</div>", $txt);
    questo è quello che uso io funzionante...
    Non va...

  13. #13
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da jostock
    Codice PHP:
    $txt = preg_replace("#\[QUOTE\](.*?)\[\/QUOTE\]#is", "<div>\\1</div>", $txt);
    questo è quello che uso io funzionante...
    Ho copiato il tuo codice ma non funziona. Se non ci credi guarda.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  14. #14
    Guest

    Predefinito

    il problema deriva dal fatto che dovrebbe partire dal quote + interno per uscire poi verso l'esterno.

  15. #15
    Guest

    Predefinito

    Citazione Originalmente inviato da sql
    il problema deriva dal fatto che dovrebbe partire dal quote + interno per uscire poi verso l'esterno.

    E quindi? Come si potrebbe fare?

  16. #16
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Provo ad improvvisare qualcosa...
    Codice PHP:
    <?php
    $quote_stack
    = array ();
    $quote_count = 0;
    $last_quote = 0;

    while (
    $last_quote < strlen ($message))
    {
    $start_quote_pos = strpos ($message, '[QUOTE]', $last_quote);
    $end_quote_pos = strpos ($message, '[/QUOTE]', $last_quote);
    if (
    $start_quote_pos < $end_quote_pos)
    {
    // quote aperto prima di uno chiuso, memorizzalo
    $quote_stack[++$quote_count] = $start_quote_pos;
    $last_quote = $start_quote_pos + strlen ('[QUOTE]');
    }
    else
    {
    // quote chiuso, guarda se c'è l'ultimo aperto...
    if ($quote_count > 0)
    {
    // c'è? allora sostituiscilo con il tag appropriato...
    $message = substr_replace ($message, '</BLOCKQUOTE>', $end_quote_pos, strlen ('[/QUOTE]');
    $message = substr_replace ($message, '<BLOCKQUOTE>', $quote_stack[$quote_count--], strlen ('[QUOTE]');
    $last_quote = $end_quote_pos - strlen ('[QUOTE]') + 2 * strlen ('<BLOCKQUOTE>') + 1
    }
    // non c'è un quote aperto? allora ignoralo...
    else
    $last_quote = $end_quote_pos + strlen ('[/QUOTE]');
    }
    }
    ?>
    Preciso che ho fatto questo script solo sulla base della documentazione (che non credo di aver capito molto bene)... dite anche a me se funziona perché devo farci un pensierino a mia volta...

    Statemi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  17. #17
    Guest

    Predefinito

    [QUOTE=dementialsite]Provo ad improvvisare qualcosa...
    Codice PHP:
    <?php
    $quote_stack
    = array ();
    $quote_count = 0;
    $last_quote = 0;

    while (
    $last_quote < strlen ($message))
    {
    $start_quote_pos = strpos ($message, '', $last_quote);
    if (
    $start_quote_pos < $end_quote_pos)
    {
    // quote aperto prima di uno chiuso, memorizzalo
    $quote_stack[++$quote_count] = $start_quote_pos;
    $last_quote = $start_quote_pos + strlen ('');
    $message = substr_replace ($message, '<BLOCKQUOTE>', $quote_stack[$quote_count--], strlen ('[QUOTE]');
    $last_quote = $end_quote_pos - strlen ('');
    }
    }
    ?>[/QUOTE]
    Preciso che ho fatto questo script solo sulla base della documentazione (che non credo di aver capito molto bene)... dite anche a me se funziona perché devo farci un pensierino a mia volta...

    Statemi bene...

    Mi da l'errore per timeout di 30 secondi

  18. #18
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    In effetti non avevo previsto che prima o poi i tag di quote finiranno...
    Codice PHP:
    <?php
    $quote_stack
    = array ();
    $quote_count = 0;
    $last_quote = 0;

    while (
    TRUE)
    {
    $start_quote_pos = strpos ($message, '[QUOTE]', $last_quote);
    $end_quote_pos = strpos ($message, '[/QUOTE]', $last_quote);
    if (
    $end_quote_pos === FALSE)
    // non ci sono più tag di chiusura, non sostituire altro!
    break;
    if (
    $start_quote_pos !== FALSE && $start_quote_pos < $end_quote_pos)
    {
    // quote aperto prima di uno chiuso, memorizzalo
    $quote_stack[++$quote_count] = $start_quote_pos;
    $last_quote = $start_quote_pos + strlen ('[QUOTE]');
    }
    else
    {
    // quote chiuso, guarda se c'è l'ultimo aperto...
    if ($quote_count > 0)
    {
    // c'è? allora sostituiscilo con il tag appropriato...
    $message = substr_replace ($message, '</BLOCKQUOTE>', $end_quote_pos, strlen ('[/QUOTE]');
    $message = substr_replace ($message, '<BLOCKQUOTE>', $quote_stack[$quote_count--], strlen ('[QUOTE]');
    $last_quote = $end_quote_pos - strlen ('[QUOTE]') + 2 * strlen ('<BLOCKQUOTE>') + 1
    }
    // non c'è un quote aperto? allora ignoralo...
    else
    $last_quote = $end_quote_pos + strlen ('[/QUOTE]');
    }
    }
    ?>
    C'è una poco elegante "uscita in corsa" dal ciclo, ma dovrebbe funzionare... le prove purtroppo non posso permettermele in questo momento :-(

    Statemi bene...

    P.S. Avete notato che "quotando" il codice si è tranciato...?
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  19. #19
    Guest

    Predefinito

    [QUOTE=dementialsite]In effetti non avevo previsto che prima o poi i tag di quote finiranno...
    Codice PHP:
    <?php
    $quote_stack
    = array ();
    $quote_count = 0;
    $last_quote = 0;

    while (
    TRUE)
    {
    $start_quote_pos = strpos ($message, '', $last_quote);
    if (
    $end_quote_pos === FALSE)
    // non ci sono più tag di chiusura, non sostituire altro!
    break;
    if (
    $start_quote_pos !== FALSE && $start_quote_pos < $end_quote_pos)
    {
    // quote aperto prima di uno chiuso, memorizzalo
    $quote_stack[++$quote_count] = $start_quote_pos;
    $last_quote = $start_quote_pos + strlen ('');
    $message = substr_replace ($message, '<BLOCKQUOTE>', $quote_stack[$quote_count--], strlen ('[QUOTE]');
    $last_quote = $end_quote_pos - strlen ('');
    }
    }
    ?>[/QUOTE]
    C'è una poco elegante "uscita in corsa" dal ciclo, ma dovrebbe funzionare... le prove purtroppo non posso permettermele in questo momento :-(

    Statemi bene...

    P.S. Avete notato che "quotando" il codice si è tranciato...?
    Ci siam quasi...
    trasforma nel giusto quote il messaggio + interno ma lascia in testo normale gli altri.
    Inoltre da due errori prima del quote:

    Citazione Originalmente inviato da i due messaggi di errore
    Warning: strpos(): Offset not contained in string. in c:\programmi\easyphp1-8\www\phpnick\files_include\funzioni.php on line 26

    Warning: strpos(): Offset not contained in string. in c:\programmi\easyphp1-8\www\phpnick\files_include\funzioni.php on line 27
    Ove le linee 26 e 27 sono le seguenti:

    Codice PHP:
    $start_quote_pos = strpos($messaggio, '[quote]', $last_quote);
    $end_quote_pos = strpos ($messaggio, '[/quote]', $last_quote);

  20. #20
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da zorinik
    Ci siam quasi...
    trasforma nel giusto quote il messaggio + interno ma lascia in testo normale gli altri.
    Inoltre da due errori prima del quote:



    Ove le linee 26 e 27 sono le seguenti:

    Codice PHP:
    $start_quote_pos = strpos($messaggio, '', $last_quote);
    Mmmm penso che tu sia su netsons.org ... i warnings non mi sono familiari.

  21. #21
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da Leo91
    Mmmm penso che tu sia su netsons.org ... i warnings non mi sono familiari.
    Citazione Originalmente inviato da Zorinik
    Citazione Originalmente inviato da i due messaggi di errore
    Warning: strpos(): Offset not contained in string. in c:\programmi\easyphp1-8\www\phpnick\files_include\funzioni.php on line 26

    Warning: strpos(): Offset not contained in string. in c:\programmi\easyphp1-8\www\phpnick\files_include\funzioni.php on line 27
    Come puoi notare dal percorso della pagina con l'errore sta usando EasyPHP che ha delle impostazioni di default più rigide sul codice rispetto ad AlterVista.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  22. #22
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da funcool
    Come puoi notare dal percorso della pagina con l'errore sta usando EasyPHP che ha delle impostazioni di default più rigide sul codice rispetto ad AlterVista.
    Ah ok.
    Però, se EasyPHP dà questi errori, significa che il "nostro" codice che scriviamo su AV, non è del tutto corretto?

    Ciaooo!

  23. #23
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da Leo91
    Ah ok.
    Però, se EasyPHP dà questi errori, significa che il "nostro" codice che scriviamo su AV, non è del tutto corretto?

    Ciaooo!
    Diciamo di sì, infatti provando a fare il redirect tramite PHP dopo aver già dato dell'output su AlterVista funziona, mentre con EasyPHP no.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  24. #24
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da funcool
    Diciamo di sì, infatti provando a fare il redirect tramite PHP dopo aver già dato dell'output su AlterVista funziona, mentre con EasyPHP no.
    Capito, Grazie!!!

  25. #25
    Guest

    Predefinito

    Si ma i Warnings che significano?

  26. #26
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da Zorinik
    Si ma i Warnings che significano?
    Che il valore di $last_quote è minore di 0 oppure è più grande della lunghezza della stringa.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  27. #27
    Guest

    Predefinito

    Citazione Originalmente inviato da funcool
    Che il valore di $last_quote è minore di 0 oppure è più grande della lunghezza della stringa.
    Si può risolvere?
    Scusate per "l'ignoranza" ma il fatto è che la funzione strpos è la prima volta che la sento nominare nn so nemmeno a che serve... :)


    Uff... dov'è Demential? ^_^
    Ultima modifica di Zorinik : 07-07-2006 alle ore 11.39.20

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •