Eliminar caracteres de control de una cadena UTF-8 en PHP

Así que estoy eliminando los caracteres de control (tab, cr, lf, \ vy todos los demás caracteres invisibles) en el lado del cliente (después de la entrada) pero como no se puede confiar en el cliente, también tengo que eliminarlos en el servidor.

así que de acuerdo a este enlacehttp://www.utf8-chartable.de/

los caracteres de control son de x00 a 1F y de 7F a 9F. por lo tanto, mi cliente (javascript) controla la función de eliminación de caracteres:

return s.replace(/[\x00-\x1F\x7F-\x9F]/g, "");

y mi función de eliminación de caracteres de control php (servidor) es:

$s = preg_replace('/[\x00-\x1F\x7F-\x9F]/', '', $s);

Ahora, esto parece crear problemas con los caracteres utf8 internacionales como ς (xCF x82) solo en PHP (debido a que x82 está dentro del segundo grupo de secuencias), el equivalente de javascript no crea ningún problema.

Ahora mi pregunta es, ¿debo eliminar los caracteres de control de 7F a 9F? A mi entender, las secuencias de 127 a 159 (7F a 9F) obviamente pueden ser parte de una cadena UTF-8 válida.

Además, tal vez ni siquiera debería filtrar los 00 a 31 caracteres de control porque también algunos de esos caracteres pueden aparecer en algunos caracteres extraños (¿japonés? ¿chino?) pero válidos para utf-8?

Respuestas a la pregunta(1)

Su respuesta a la pregunta