Visualizzazione risultati 1 fino 10 di 10

Discussione: Eseguire formattazione testo da html a bbcode

  1. #1
    Guest

    Predefinito Eseguire formattazione testo da html a bbcode

    Non riesco a capire dove sbaglio...
    Ho un testo in html, e lo devo riformattare in modo che sia in bbcode, però quando eseguo lo script, come risultato non mi viene mostrato nulla...
    Il codice è il seguente
    Codice PHP:
    $text = stripslashes($_POST['testo']);
    function
    bbcode_format($text) {
    $replace = array(
    '/[b]$1[/b]',
    '/[i]$1[/i]',
    '/[u]$1[/u]',
    '/[img]$1[/img]',
    '/[url=$1]$2[/url]'
    );
    $search = array(
    '<strong>(.*?)</strong>/is',
    '<em>(.*?)</em>/is',
    '<u>(.*?)</u>/is',
    '<img src="(.*?)" />/is',
    '<a href="(.*?)">(.*?)</a>/is'
    );
    $var = preg_replace ($search, $replace, $text);

    }
    textarea("Edit", "$var", "edit");
    Non riesco proprio a capire dove sia il problema...
    Qualche suggerimento??

  2. #2
    Guest

    Predefinito

    Se non richiami la funzione è difficile che funzioni...
    Codice PHP:
    $text = stripslashes($_POST['testo']);

    bbcode_format($text); //richiami la funzione

    function bbcode_format($text) {
    $replace = array(
    '/[b]$1[/b]',
    '/[i]$1[/i]',
    '/[u]$1[/u]',
    '/[img]$1[/img]',
    '/[url=$1]$2[/url]'
    );
    $search = array(
    '<strong>(.*?)</strong>/is',
    '<em>(.*?)</em>/is',
    '<u>(.*?)</u>/is',
    '<img src="(.*?)" />/is',
    '<a href="(.*?)">(.*?)</a>/is'
    );
    $var = preg_replace ($search, $replace, $text);
    textarea("Edit", $var, "edit"); //prima stava fuori
    }

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da stoner Visualizza messaggio
    Se non richiami la funzione è difficile che funzioni...
    Codice PHP:
    $text = stripslashes($_POST['testo']);

    bbcode_format($text); //richiami la funzione

    function bbcode_format($text) {
    $replace = array(
    '/[b]$1[/b]',
    '/[i]$1[/i]',
    '/[u]$1[/u]',
    '/[img]$1[/img]',
    '/[url=$1]$2[/url]'
    );
    $search = array(
    '<strong>(.*?)</strong>/is',
    '<em>(.*?)</em>/is',
    '<u>(.*?)</u>/is',
    '<img src="(.*?)" />/is',
    '<a href="(.*?)">(.*?)</a>/is'
    );
    $var = preg_replace ($search, $replace, $text);
    textarea("Edit", $var, "edit"); //prima stava fuori
    }
    Azz... mi hai preceduto... stavo ridando un'occhiata al file e mene ero appena accorto...
    Ora però il problema è un altro...
    Ovvero, come risultato mi restituisce sempre il testo in html e non in bbcode...

    P.S.
    Per evitare eventuali incomprensioni, posto il codice così come l'ho modificato adesso...
    Codice PHP:
    $text = stripslashes($_POST['testo']);
    function
    bbcode_format($var) {
    $replace = array(
    '/[b]$1[/b]',
    '/[i]$1[/i]',
    '/[u]$1[/u]',
    '/[img]$1[/img]',
    '/[url=$1]$2[/url]'
    );
    $search = array(
    '<strong>(.*?)</strong>/is',
    '<em>(.*?)</em>/is',
    '<u>(.*?)</u>/is',
    '<img src="(.*?)" />/is',
    '<a href="(.*?)">(.*?)</a>/is'
    );
    $var = preg_replace ($search, $replace, $var);
    return
    $var;
    }
    $text = bbcode_format($text);
    textarea("Edit", "$text", "edit");

  4. #4
    Guest

    Predefinito

    sono sbagliate le regex, manca il carattere di inizio pattern che nel tuo caso dovrebbe essere lo slash.
    Codice PHP:
    $replace = array(
    '[b]$1[/b]',
    '[i]$1[/i]',
    '[u]$1[/u]',
    '[img]$1[/img]',
    '[url=$1]$2[/url]'
    );
    $search = array(
    '#<strong>(.*?)</strong>#is',
    '#<em>(.*?)</em>#is',
    '#<u>(.*?)</u>#is',
    '#<img src="(.*?)" />#is',
    '#<a href="(.*?)">(.*?)</a>#is'
    );
    nota: ho usato il cancelletto per evitare problemi coi tag html

    p.s. sei sicuro che vada bene così? questa funzione trasforma da HTML a BBCODE, di solito è il contrario
    Ultima modifica di Inverno : 19-05-2009 alle ore 09.04.08

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da Inverno Visualizza messaggio
    sono sbagliate le regex, manca il carattere di inizio pattern che nel tuo caso dovrebbe essere lo slash.
    Codice PHP:
    $replace = array(
    '[b]$1[/b]',
    '[i]$1[/i]',
    '[u]$1[/u]',
    '[img]$1[/img]',
    '[url=$1]$2[/url]'
    );
    $search = array(
    '#<strong>(.*?)</strong>#is',
    '#<em>(.*?)</em>#is',
    '#<u>(.*?)</u>#is',
    '#<img src="(.*?)" />#is',
    '#<a href="(.*?)">(.*?)</a>#is'
    );
    nota: ho usato il cancelletto per evitare problemi coi tag html

    p.s. sei sicuro che vada bene così? questa funzione trasforma da HTML a BBCODE, di solito è il contrario
    Perfetto funziona quasi tutto
    Si si l'operazione la devo eseguire al contrario, lo so che è strano ma mi serve per far modificare i messaggi che sono in formato HTML...
    C'è un ultimissimo problema (e poi se Dio vuole, con il bbcode ho finito)...
    Sarò stupido io... Ma non riesco a capire come mai l'ultima stringa che mi deve trovare per sostituirla con il relativo bbcode non la trova e quindi mi lascia il tutto in html...
    Codice PHP:
    $replace = array(
    '[b]$1[/b]',
    '[i]$1[/i]',
    '[u]$1[/u]',
    '[img]$1[/img]',
    '[url=$1]$2[/url]',
    '[quote]$1[/quote]'
    );
    $search = array(
    '#<strong>(.*?)</strong>#is',
    '#<em>(.*?)</em>#is',
    '#<u>(.*?)</u>#is',
    '#<img src="(.*?)" />#is',
    '#<a href="(.*?)">(.*?)</a>#is',
    '#<table border="0"><tr><td><font face="arial" size="1">QUOTE</font></td></tr><tr><td bgcolor="#6699CC"><font face="arial" size="1">(.*?)</font></td></tr></table>#is'
    );
    Sto parlando del codice
    Codice HTML:
    <table border="0"><tr><td><font face="arial" size="1">QUOTE</font></td></tr><tr><td bgcolor="#6699CC"><font face="arial" size="1">(.*?)</font></td></tr></table>
    Non capisco come mai, ma anziché modificarla in
    Codice HTML:
    [quote]messaggio[/quote]
    mela lascia formattata in html...

  6. #6
    Guest

    Predefinito

    Usi il cancelletto # per delimitare la ricerca del pattern, ma è anche usato per i colori esadecimali.


    Ciao!

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    Usi il cancelletto # per delimitare la ricerca del pattern, ma è anche usato per i colori esadecimali.
    ops, svista
    puoi usare il tilde, oppure un bel escape (\)
    Codice PHP:
    '~<table border="0"><tr><td><font face="arial" size="1">QUOTE</font></td></tr><tr><td bgcolor="#6699CC"><font face="arial" size="1">(.*?)</font></td></tr></table>~is'
    Ultima modifica di Inverno : 19-05-2009 alle ore 16.12.39

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da Inverno Visualizza messaggio
    ops, svista
    Tu mica lo hai scritto


    ciao!

  9. #9
    Guest

    Predefinito

    ah ecco ha aggiunto poi quella riga, pensavo che ci fosse anche nel codice che avevo corretto io
    lasciate perdere

  10. #10
    Guest

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    Usi il cancelletto # per delimitare la ricerca del pattern, ma è anche usato per i colori esadecimali.


    Ciao!
    Ecco infatti... Non ci avevo minimamente fatto caso
    Citazione Originalmente inviato da Inverno Visualizza messaggio
    ops, svista
    puoi usare il tilde, oppure un bel escape (\)
    Codice PHP:
    '~<table border="0"><tr><td><font face="arial" size="1">QUOTE</font></td></tr><tr><td bgcolor="#6699CC"><font face="arial" size="1">(.*?)</font></td></tr></table>~is'
    No no è errore mio... quella riga l'ho aggiunta dopo...

Regole di scrittura

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