我想要一个正则表达式或其他字符串,它可以从字符串中替换除字母数字字符(a-z
和0-9
)之外的所有内容。应删除,@#$(@*810
等所有内容。有什么想法吗?
编辑:我现在需要这个去掉所有东西但是允许点,所以除了a-z, 1-9, .
之外的所有内容。想法?
答案 0 :(得分:64)
$string = preg_replace("/[^a-z0-9.]+/i", "", $string);
匹配一个或多个字符而不是a-z 0-9 [不区分大小写]或“。”并替换为“”
答案 1 :(得分:19)
我喜欢使用[^ [:alnum:]]来减少错误的空间。
preg_replace('/[^[:alnum:]]/', '', "(ABC)-[123]"); // returns 'ABC123'
答案 2 :(得分:2)
/[^a-z0-9.]/
应该做的伎俩
答案 3 :(得分:2)
尝试:
$string = preg_replace ('/[^a-z0-9]/i', '', $string);
/ i代表不区分大小写(当然,如果你需要它)。
答案 4 :(得分:0)
这也可以替换任何不是数字,单词字符或带下划线的句点。对文件名很有用。
$clean = preg_replace('/[^\d\w.]+/', '_', $string);