grazie, la tua risposta mi ha aiutato a trovare la giusta soluzione.

come dici non tu funziona

sono riuscito in questo modo:

$pattern = "/\[code[^\]]*?\].*?\[\/code\]/ie";
$replace = "htmlspecialchars('$0')";



in pratica ho inserito la "e" alla fine del pattern ed ho messo il contenuto di $replace tra le virgolette (come avevi detto)

ora ottengo (giustamente):

[*code*] <a href=\"\"><b>ciao</b></a> [*/code*]io pippo[*code*] <b>pluto</b>[*/code*]

se volessi eliminare anche [*code*] e [*/code*] come dovrei fare

:master: