从字符串中删除 "very" 个特殊字符

Delete "very" special characters from string

如何从字符串中删除 "very" 个特殊字符?

心、星、牛、版权等字符

我发现了这个:

$re = "/\p{S}/i";
$str = "asdas�sadsad";
$subst = "";

$result = preg_replace($re, $subst, $str);

但它删除了太多(例如“+”字符)。

您可以使用 POSIX 字符 class print(ASCII 墨水用户加宽空格),即:

$str = "asdas�sadsad";
$str = preg_replace('/[^[:print:]]/', '', $str);

echo $str;

输出:

asdassadsad

正则表达式解释:

[^[:print:]]
  • 匹配任何不在 POSIX 字符 class print «[^[:print:]]»
  • 中的字符

Demo


根据您的评论更新:

$str = "asdas�sadsad";
$str = preg_replace('/[^`1234567890qwertyuiop\[\]asdfghjkl;\'zxcvbnm,\.-~!@%\^&\*\(\)_\+\{\}:\|<>\?ąęćżźółńQWERTYUIOPASDFGHJKLZXCVBNMĄĘĆŻŹÓŁŃ]/i', '', $str);
echo $str; 

替换列表中的所有字符。


Demo 2