Pues entonces solo tienes que arreglar la funcion preg_match de tal forma que solo te quite el signo deseado solo si este está al principio o al final de la cadena. Ejemplo:
   Código PHP:
    $a = preg_replace ('/!$/' , '' , '¿exclamac!on!');
 
echo $a."<br/>"; // Devuelve ¿exclamac!on
 
$b = preg_replace ('/^¿/' , '' , '¿exclamac!on!'); 
 
echo $b; // Devuelve exclamac!on! 
    
  Saludos