特殊字符在php中重命名为下划线

时间:2014-01-25 16:35:08

标签: php regex str-replace

将表单中收集的所有特殊字符重命名为下划线的好方法是什么?

以下是要替换的特殊字符的示例:

[.!,;:@#$%^&*|()?/\\\<>] space tab CR NL

我正在绑定一个由用户下载的软件,在该软件中,重命名约定是用下划线替换上面列出的任何字符。并且为了使我的基于Web的应用程序正常工作,它需要在表单字段中收集一些信息,其名称与用户将其放入软件中的名称完全相同,并使命名约定正常工作。因此,当mp3文件上传,并且ajax调用检查文件时,它将完全匹配,从而绊掉其余的功能。

2 个答案:

答案 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);

这也会捕获反引号和其他特殊字符之类的字符,例如:

  

`îõ§¶þäô