No te compliques con tus erg_replace() (que por otro lado sería mejor usar simplemente str_replace()) ..
Para "codificar" variables que pasar por el URL tienes ya la función:
urlencode()
Ejemplo:
Código PHP:
<?
$variable="nose blalala ¿blablab? ñ á ... y espacios";
?>
<a href="nose.php?variable=<? echo urlencode($variable) ?>">link</a>
Donde lo recibas .. puedes aplicar urldecode() para la operación inversa.
Un saludo,