Visualizzazione risultati 1 fino 12 di 12

Discussione: Problema regex e BBCode

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito Problema regex e BBCode

    Buongiorno.
    Utilizzo preg_match in questo modo:

    Codice PHP:
    preg_match("/\[mik sco=\"(.*)\"\]/", $input_line, $output_array);
    Per parsare:
    Codice:
    [mik sco="https://URL/file.php?n=6"]
    Su phpliveregex.com funziona bene mentre sul mio server no. Mi restituisce un array vuoto.
    Come mai?
    Ultima modifica di miki92 : 10-10-2016 alle ore 10.10.39
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Allora preg_match può restituire 0 o false in queste condizioni http://php.net/manual/en/function.preg-match.php puoi fare un test
    Codice PHP:
    var_dump(preg_match("/\[mik sco=\"(.*)\"\]/", $input_line, $output_array), $output_array);
    cosi ti stampa anche i valori booleani.. Io penso che nel tuo server hai magic_quotes abilitato http://php.net/manual/en/security.magicquotes.php prova un'attimo così?
    Codice PHP:
    preg_match('/\[mik sco="(.*)"\]/', $input_line, $output_array);
    dovrebbe funzionare se non hai attivo magic_quotes_sybase
    Ultima modifica di darbula : 10-10-2016 alle ore 14.19.38

  3. #3
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Su phpliveregex.com funziona bene mentre sul mio server no. Mi restituisce un array vuoto.
    Versione di PHP e PCRE? Sul mio spazio AlterVista il tuo codice dà il risultato atteso, con PHP versione 5.6.18, PCRE versione 8.38.

    Controlla la presenza di errori durante il match tramite preg_last_error.

  4. #4
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Nulla. Continua a non funzionare in nessun modo.
    E di errori non c'è ne sono secondo la funzione indicata.
    Apprezzi l'aiuto? Offrimi un caffè!

  5. #5
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    effettui un invio post e dopo recuperi il bbcode??? hai attivo magic_quotes_gpc?
    EDIT: tagliamo la testa al toro metti solo questo nella textarea
    Codice:
    [mik sco="https://URL/file.php?n=6"]
    totale 36 bytes
    Codice PHP:
    <?php
    $input_line
    = '[mik sco="https://URL/file.php?n=6"]';
    //$input_line = addslashes($input_line);
    if(!empty($input_line) == TRUE){
    if(
    strlen($input_line) != 36){ //se si decommenta 38
    echo 'hai attivo magic_quotes_gpc con o senza magic_quotes_sybase';
    }else{
    $pattern = "/\[mik sco=\"(.*)\"\]/"; //20 bytes
    var_dump(preg_match($pattern, $input_line, $output_array), $output_array, strlen($input_line));
    }
    }
    ?>
    ovviamente $input_line deve essere il contenuto della textarea (GET o POST)
    ps. se si prova a deccomentare $input_line l'array di preg_match sará vuoto
    Ultima modifica di darbula : 11-10-2016 alle ore 01.32.09

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Puoi riportare la versione di PHP e PCRE che utilizzi?

  7. #7
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Scusate se non l'ho precisato prima ma lo script si trova esternamente ad altervista (è un bridge con uno script su AV) e la versione di PHP è 5.6.26 mentre le PCRE sono 8.20 2011-10-21.

    Ho capito che comunque il problema sta in TinyMCE che aggiunge delle strane stringhe.

    L'espressione attualmente utilizzata è:

    Codice PHP:
    preg_match('/\[mik sco=([^"]+)\]/', $input, $out);
    Ma riporta sempre quelle strane quote... come posso fare?
    Apprezzi l'aiuto? Offrimi un caffè!

  8. #8
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    EDIT: Prova questo script che dovrai chiamarlo test.php
    Codice PHP:
    <!DOCTYPE html>
    <html>
    <head>
    <title>Test</title>
    </head>
    <body>
    <form action="test.php" method="post">
    <textarea name="testo"><?php if(empty($_POST['testo'])){echo '[mik sco="https://URL/file.php?n=6"]';}else{echo $_POST['testo'];} ?></textarea>
    <input type="submit" value="Submit now">
    </form>
    </body>
    </html>
    posta la stringa dopo l'invio del modulo e come invece volevi fosse la stringa.
    Ultima modifica di darbula : 11-10-2016 alle ore 22.57.05

  9. #9
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ho capito che comunque il problema sta in TinyMCE che aggiunge delle strane stringhe.
    Quindi l'input fornito a preg_match è una stringa prodotta da TinyMCE? In questo caso, conviene capire il formato delle stringhe prodotte, e modificare l'espressione regolare di conseguenza, oppure pre-elaborare la stringa in modo da "ripulirla" dai caratteri inseriti da TinyMCE.

    Qualche esempio dei valori per $input che stai osservando sarebbe d'aiuto.

  10. #10
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    In TinyMCE io inserisco solamente quel codice sopra mostrato (il BBCode per intenderci).
    Le virgolette che aggiungo vengono sempre modificate in altre sia singole che doppie.
    Ho dovuto risolvere eliminando completamente le virgolette.

    Grazie per l'aiuto.
    Apprezzi l'aiuto? Offrimi un caffè!

  11. #11
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Hai risolto per quanto riguarda il bbcode ma non per la modifica del sorgente.. Se un utente scrive "l'alba chiara" dopo l'invio verrá visualizzato "l''alba chiara" poichè è il server che aggiunge l'apice singolo nel caso di magic_quotes_gpc e magic_quotes_sybase (oppure il database).. per verificare questo comportamento mi stampi il valore della textarea dopo l'invio come ho proposto in questo codice.. http://forum.it.altervista.org/php-m...ml#post1318508 altrimenti se non ci sono apici aggiunti o si modifica il sorgente o si modifica il javascript di Tynimce.
    Ultima modifica di darbula : 12-10-2016 alle ore 12.11.01

  12. #12
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Citazione Originalmente inviato da darbula
    poichè è il server che aggiunge l'apice singolo nel caso di magic_quotes_gpc e magic_quotes_sybase
    Citazione Originalmente inviato da miki92
    la versione di PHP è 5.6.26
    Dalla versione 5.4.0 di PHP i magic quotes sono stati rimossi: Magic Quotes, quindi molto probabilmente è TinyMCE.

Regole di scrittura

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