un'altra soluzione sarebbe da esaminarla prima di mandarla in pasto al bbcode parser. a tal proposito mi son creato una funzioncina :
sembra funzionare, tranne per il fatto che fà l'explode solo per un parametro ' ' (lo spazio), e a me servirebbe oltre che allo spazio anche per i ritorni a capo (non sò se esiste un modo con l'explore di impostare più delimitatori);codice:function checkLinks($string) { $arrelab=""; $arr=explode(' \r\n', $string); for($i=0; $i<sizeof($arr); $i++) { if ((strpos($arr[$i], 'www.')!==false) or (strpos($arr[$i], 'http://')!==false) or (strpos($arr[$i], 'ftp://')!==false)) { if (strpos($arr[$i], '[url=')===false) { $arr[$i]=''.$arr[$i].''; } } $arrelab=$arrelab." ".$arr[$i]; } return $arrelab; } // row[0] è la stringa da stampare, presa dal DB <? $row[0]=checkLinks(htmlspecialchars($row[0])); ?> <?=forumBBCode($row[0])?>
questo approccio non sò se sia il migliore, in quanto se ho una stringa memorizzata (supponiamo) in un mediumtext di mysql, fare l'explode su tale stringa è un operarazione esosa... (anche se il preg_replace viene cmq applicato su una stringa di tale dimensione...)
aspetto qualche vostra illuminazione![]()

Rispondi quotando