per dire a preg_replace di eseguire codice php devi usare il modificatore di criterio "e":
Codice PHP:
$pattern = "/\\[mode\\](.+)\\[\\/mode\\]/i[B]e[/B]";
secondo poi come replacement devi passare una stringa, mentre quello che fai tu č semplicemente associare a $replace il valore restituito da htmlspecialchars. Devi scrivere cosė:
Codice PHP:
$replace = "htmlspecialchars('$1')";
ho cambiato l'escape con il dollaro che sono pių comodo.
Mentre per invertire la voracitā di riconoscimento in modo che la funzione riconosca anche i tag in mezzo alla stringa devi usare o il modificatore "U" oppure il punto interrogativo dopo l'asterisco:
Codice PHP:
$pattern = "/\\[mode\\](.+[B]?[/B])\\[\\/mode\\]/i[B]e[/B]";
$pattern = "/\\[mode\\](.+)\\[\\/mode\\]/i[B]eU[/B]";