Allora le funzioni che dovrai utilizzare sono
-> htmlspecialcharts
-> stripslashes
-> str_replace
-> nl2br
Quando hai un textarea e ci vuoi scrivere un articolo devi considerare alcune cose
-> che alcuni caratteri vanno formattati (< > &)
-> che gli "invio" nel textarea non corrispondo a <br> nell'html
-> che se hai attivato di default magic_quotes_gpc ti verranno aggiunti i backslash
-> che al posto di inserire html puro metti condice BB del tipo ciao www.miosito.it
da dove si comincia? Raccogliendo i POST
Codice PHP:
$text = isSet($_POST['textarea']) ? $_POST['textarea'] : '';
Poi si comincia con la formattazione! Ad ogni passaggio ti metto sopra un commento per spiegarti l'azione
Codice PHP:
// levo i backslash
$text = stripslashes($text);
// formatto i caratteri come < > &
$text = htmlspecialcharts($text);
// trasformo gli "invio" del textarea in <br> nell'html
// attenzione la funzione nl2br DEVE essere eseguita dopo htmlspecialcharts altrimenti ti giochi i < > del <br>
$text = nl2br($text);
Poi la variabile $text la salvi come credi dentro un cookie,db o file txt/php!
La fase più importante è la ripresa del testo! Averlo messo dentro è stata una cosa relativamente facile perchè non hai formattato il testo!
La parte dopo il commento // Link serve per formattare un url anche se non viene immesso tra i tag [url ] e [/url] ma viene scritto solo del tipo www o http://
Questa formattazione la usa anche questo forum
Adesso vediamo quando devi stampare il testo cosa fare
Codice PHP:
// hai a diposizione la tua variabile $text presa sempre da cookie/db/php/txt
// trasformo text in un vettore diviso da tutti gli spazi! Questo mi permette di avere tutte le parole in un array!
$words = explode(' ' , $text);
for($i=0 ; $i<count($word) ; $i++) {
// Link
$word[$i] = trim($word[$i]);
$var = isset($word[$i]{0}) ? strtolower($word[$i]{0}) : '';
$var .= isset($word[$i]{1}) ? strtolower($word[$i]{1}) : '';
$var .= isset($word[$i]{2}) ? strtolower($word[$i]{2}) : '';
$var .= isset($word[$i]{3}) ? strtolower($word[$i]{3}) : '';
if(trim($var) == 'http') {
$word[$i] = '<a href="'. word[$i] .'">'. $word[$i] .'</a>';
} elseif(trim($var)=='www.') {
$word[$i] = '<a href="http://'. word[$i] .'">'. $word[$i] .'</a>';
}
// Grassetto
$words[$i] = str_replace('[b]','<b>',$words[$i]);
$words[$i] = str_replace('[/b]','</b>',$words[$i]);
// Corsivo
$words[$i] = str_replace('[i]','<i>',$words[$i]);
$words[$i] = str_replace('[/i]','</i>',$words[$i]);
// Sottolineato
$words[$i] = str_replace('[u]','<u>',$words[$i]);
$words[$i] = str_replace('[/u]','</u>',$words[$i]);
// Immagini
if( strpos( $words[$i], '[img]' ) !== false && strpos( $words[$i], '[/img]' ) !== false) {
$link = str_replace('[img]','',$words[$i]);
$link = str_replace('[/img]','',$link);
$words[$i] = "<img src=\"$link\">";
}
}
$text = implode(' ', $words);
se ci sono errori o imprecisinoi i domande sono qua :winkOLD: