Visualizzazione risultati 1 fino 6 di 6

Discussione: ereg_replace e tag per forum

  1. #1
    Guest

    Question ereg_replace e tag per forum

    dovrei fare una funzione per sostituire i codici tipo BBcode nei corrispondenti tag html...
    [b]=<b>
    [img]=<img>
    ...eccetera...

    ho iniziato a scrivere il codice, ma mi sono bloccato subito
    Codice PHP:
    $testo="prova [img]prova.gif[/img] aa";
    $cerca="[img][a-zA-z0-9.][/img]";
    $sostituisci="<img src=\"\\1\">";
    $testo=ereg_replace($cerca, $sostituisci, $testo);
    echo
    $testo;
    questo mi ritorna:
    Codice:
    prova [<img src="\1">]prova.gif[/<img src="\1">] aa
    ps: non mi interessa il UID che usa phpBB...

  2. #2
    Guest

    Predefinito

    Non ho testato questo codice ma prova cosi :

    Codice PHP:
    <?php
    $testo
    ="prova [img]prova.gif[/img] aa";
    $testo = str_replace("[img]","<img src=\"",$testo);
    $testo = str_replace("[/img]"," border=\"0\">",$testo);
    echo
    $testo;
    ?>
    Puoi fare la stessa cosa anche per il grassetto e altre tag.

  3. #3
    Guest

    Predefinito

    il problema è che così non controlla se [img] è stato chiuso con [/img]..quindi potrei trovarmi di fronte a cose tipo:

    <img src="prova.gif questa immagine dimostra...bla bla bla

    lo stesso vale per i <b>,<i>....potrei trovarmi con tutto il testo in grassetto :S o tutto inclinato....

  4. #4
    Guest

    Predefinito

    Hai ragione nn ci avevo pensato.

  5. #5
    Guest

    Predefinito

    anche io ho la necessità di "controllare" che il tag sia chiuso ....
    per il resto, ho usato questa fuzione che va alla grande (tratto dal forum di html.it)

    Codice:
    function adv_format($textarea){
    $textarea = trim($textarea);
    $textarea = stripslashes($textarea);
    $textarea = htmlentities($textarea);
    $textarea = nl2br($textarea);
    $textarea = ereg_replace("\[b\]","<b>",$textarea);
    $textarea = ereg_replace("\[/b\]","</b>",$textarea);
    $textarea = ereg_replace("\[i\]","<i>",$textarea);
    $textarea = ereg_replace("\[/i\]","</i>",$textarea);
    $textarea = ereg_replace("\[u\]","<u>",$textarea);
    $textarea = ereg_replace("\[/u\]","</u>",$textarea);
    $textarea = preg_replace("#\[url=([^\]]+)\]#i", "<a href=\"\\1\" target=\"_blank\">", $textarea);
    $textarea = preg_replace("#\[/url\]#i", "</a>", $textarea); 
    $textarea = preg_replace( "#\[img\](.+?)\[/img\]#si", "<img src=\"\\1\">", $textarea);
    return $textarea;
    }
    però sarei curioso di sapere come si fa la storia del cotrollo sulla chiusura dei tag (se usi la fuzione sopra postata, non dovresti avere prob per la chiusura del tag immagine o url, ma per quella altri tag)

  6. #6
    Guest

    Talking

    grazie! l'ho modificato un po'..ora va perfettamente :D
    Codice PHP:
    function adv_format($textarea){
    $textarea = trim($textarea);
    $textarea = stripslashes($textarea);
    $textarea = htmlentities($textarea);
    $textarea = nl2br($textarea);
    $textarea = preg_replace("#\[url=([^\]]+)\]#i", "<a href=\"\\1\" target=\"_blank\">", $textarea);
    $textarea = preg_replace("#\[/url\]#i", "</a>", $textarea);
    $textarea = preg_replace( "#\[img\](.+?)\[/img\]#si", "<img src=\"\\1\">", $textarea);
    $textarea = preg_replace( "#\[b\](.+?)\[/b\]#si", "<b>\\1</b>", $textarea);
    $textarea = preg_replace( "#\[i\](.+?)\[/i\]#si", "<i>\\1</i>", $textarea);
    $textarea = preg_replace( "#\[u\](.+?)\[/u\]#si", "<u>\\1</u>", $textarea);
    return
    $textarea;
    }
    echo
    adv_format("prova normale [b]bold[/b] inoltre un immagine [img]prova.gif[/img] e un [b]bold non chiuso[u]under[/u] [/i]");
    ci ho messo anche un ECHO con le varie situazioni, per vedere come si comporta (così nn dovete testarvelo da 0 :P)

Regole di scrittura

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