El problema es que las variables $specialChars y $htmlEntities no existen en el ambito de la funcion y no realiza reemplazo alguno, para ello deberas usar
global var1, var2, etc.:
Código PHP:
Ver originalfunction codificar($cadena) {
global $specialChars, $htmlEntities;
$cadena = str_replace($specialChars, $htmlEntities, $cadena); return $cadena;
}
echo codificar($test);
Con esto, el resultado debe ser correcto, a menos que tengas tus scripts con una codificacion y la entrada de datos con otra. Suponiendo que la entrada de datos (mysql, get, post, etc) esta en utf8 y tus scripts en iso podrias usar: