将表单中收集的所有特殊字符重命名为下划线的好方法是什么?
以下是要替换的特殊字符的示例:
[.!,;:@#$%^&*|()?/\\\<>] space tab CR NL
我正在绑定一个由用户下载的软件,在该软件中,重命名约定是用下划线替换上面列出的任何字符。并且为了使我的基于Web的应用程序正常工作,它需要在表单字段中收集一些信息,其名称与用户将其放入软件中的名称完全相同,并使命名约定正常工作。因此,当mp3文件上传,并且ajax调用检查文件时,它将完全匹配,从而绊掉其余的功能。
答案 0 :(得分:1)
您可以使用:
$repl = preg_replace('~[.!,;:@#$%^&*|()?/\\\<>]~', '_', $str);
答案 1 :(得分:1)
你已经差不多了:
$str = "Zebo's [Test]";
echo preg_replace("~['.!,;:@#$%^&*|()?/\\<> \t\r\n\[\]]~", "_", $str);
输出:Zebo_s__Test_
已编辑以正确包含[
,]
和'
- 没有意识到您的意思是要替换它们。
顺便说一句......你说你想要替换“所有特殊字符”,而你上面的列表只是一个“例子”。你可能想做更广泛的事情,比如:
preg_replace("~[^A-Za-z0-9]~", "_", $str);
这也会捕获反引号和其他特殊字符之类的字符,例如:
`îõ§¶þäô