替换字符串中除字母数字、连字符、句点和下划线以外的所有内容
Replacing everything other than alphanumeric, hyphen, period and underscore in a string
这是我目前用来清理带有特殊字符的文件名的方法。基本上,它应该替换除以下以外的所有内容:
- 字母数字 a-zA-Z0-9
- 下划线 _
- 连字符 -
句号.
echo preg_replace("/[^a-zA-Z0-9\_\-\.\s]/", "", "A\'s`kljdsg\\`sk//dgj@@@//\/\/\#``flkl_dfd-_-sfsfs-fk kgj.docx");
虽然看起来可行,但我不确定 _-。是在正则表达式中使用它的正确方法。
-
里面的字符 class 表示范围,例如0-9
。所以,如果你想把它放在中间,你应该把它放在最前面,最后或者转义它。
还有\w => [A-Za-z0-9_]
终于可以使用这个正则表达式了
[^\w.-]
PHP代码
$re = "/[^\w.-]/";
$str = "A\'skljdsg\\sk//dgj@@@////#``flkl_dfd-_-sfsfs-fk kgj.docx";
$result = preg_replace($re, "", $str);
如果您还想包括 space,请使用
[^\w. -]
如果你在中间使用连字符 -
你必须用斜杠转义:
preg_replace("/[^a-zA-Z0-9_\-.\s]/", "", "A\'skljdsg\\sk//dgj@@@////#``flkl_dfd-_-sfsfs-fk kgj.docx");
或者放在最后:
"/[^a-zA-Z0-9_.\s-]/"
这是我目前用来清理带有特殊字符的文件名的方法。基本上,它应该替换除以下以外的所有内容:
- 字母数字 a-zA-Z0-9
- 下划线 _
- 连字符 -
句号.
echo preg_replace("/[^a-zA-Z0-9\_\-\.\s]/", "", "A\'s`kljdsg\\`sk//dgj@@@//\/\/\#``flkl_dfd-_-sfsfs-fk kgj.docx");
虽然看起来可行,但我不确定 _-。是在正则表达式中使用它的正确方法。
-
里面的字符 class 表示范围,例如0-9
。所以,如果你想把它放在中间,你应该把它放在最前面,最后或者转义它。
还有\w => [A-Za-z0-9_]
终于可以使用这个正则表达式了
[^\w.-]
PHP代码
$re = "/[^\w.-]/";
$str = "A\'skljdsg\\sk//dgj@@@////#``flkl_dfd-_-sfsfs-fk kgj.docx";
$result = preg_replace($re, "", $str);
如果您还想包括 space,请使用
[^\w. -]
如果你在中间使用连字符 -
你必须用斜杠转义:
preg_replace("/[^a-zA-Z0-9_\-.\s]/", "", "A\'skljdsg\\sk//dgj@@@////#``flkl_dfd-_-sfsfs-fk kgj.docx");
或者放在最后:
"/[^a-zA-Z0-9_.\s-]/"