Removendo caracteres de controle de uma string UTF-8 no PHP
Portanto, estou removendo os caracteres de controle (tab, cr, lf, \ v e todos os outros caracteres invisíveis) no lado do cliente (após a entrada), mas como o cliente não pode ser confiável, também preciso removê-los no servidor.
então de acordo com este linkhttp://www.utf8-chartable.de/
os caracteres de controle são de x00 a 1F e de 7F a 9F. Assim, minha função de remoção de caracteres de controle de cliente (javascript) é:
return s.replace(/[\x00-\x1F\x7F-\x9F]/g, "");
e minha função de remoção de caracteres de controle php (server) é:
$s = preg_replace('/[\x00-\x1F\x7F-\x9F]/', '', $s);
Agora, isso parece criar problemas com caracteres utf8 internacionais, como ς (xCF x82), apenas no PHP (porque o x82 está dentro do segundo grupo de sequências), o equivalente a javascript não cria problemas.
Agora, minha pergunta é: devo remover os caracteres de controle de 7F para 9F? Para meu entendimento, as seqüências de 127 a 159 (7F a 9F) obviamente podem fazer parte de uma string UTF-8 válida?
Além disso, talvez eu nem devesse filtrar os caracteres de controle de 00 a 31, porque alguns desses caracteres podem aparecer em caracteres estranhos (japonês? chinês?), mas utf-8 válidos?