Php 将所有不可打印的UTF-8字符替换为空格

Php 将所有不可打印的UTF-8字符替换为空格,php,regex,preg-replace,Php,Regex,Preg Replace,我需要清理一些用户输入,并且需要删除所有可能导致问题的字符,例如空字节或无用字节(例如\n或\t),因为输入是或字符串或html代码。 此时,我正在使用此选项删除制表符、换行符等: preg_replace('/\s+/','',$_POST['id']) 但这还不够,我发现: preg_replace( '/[^[:print:]]/',' ',$_POST['val']) 但我不明白它是否也会删除不应该删除的字符,如德语或阿拉伯语字符或点字或符号,根据[:print:][/code>包括

我需要清理一些用户输入,并且需要删除所有可能导致问题的字符,例如空字节或无用字节(例如\n或\t),因为输入是或字符串或html代码。 此时,我正在使用此选项删除制表符、换行符等:

preg_replace('/\s+/','',$_POST['id'])
但这还不够,我发现:

preg_replace( '/[^[:print:]]/',' ',$_POST['val'])
但我不明白它是否也会删除不应该删除的字符,如德语或阿拉伯语字符或点字或符号,根据
[:print:][/code>包括“打印字符,包括空格”

这意味着“可见字符和空格(即除控制字符以外的任何字符等)”(请参阅)

  • ASCII字符:
    [\x20-\x7E]
  • Unicode:
    \P{C}

可能重复的@M42是否保留“特殊”字符,如德语、阿拉伯语或瑞典语字符?它是由PHP解释的吗?IFAIK,是的,它保留了所有“可打印”的字符。@M42我不认为PHP问题是java问题的重复。仅仅因为有人已经问过如何在另一种语言中实现相同的功能,并不意味着这个问题是重复的。