【发布时间】:2010-10-24 20:47:23
【问题描述】:
我想要一个正则表达式或其他字符串,它可以替换字符串中除字母数字字符(a-z 和0-9)之外的所有内容。所有诸如,@#$(@*810 之类的东西都应该被剥离。有什么想法吗?
编辑:我现在需要它来去除所有内容,但允许点,所以除了a-z, 1-9, . 之外的所有内容。想法?
【问题讨论】:
我想要一个正则表达式或其他字符串,它可以替换字符串中除字母数字字符(a-z 和0-9)之外的所有内容。所有诸如,@#$(@*810 之类的东西都应该被剥离。有什么想法吗?
编辑:我现在需要它来去除所有内容,但允许点,所以除了a-z, 1-9, . 之外的所有内容。想法?
【问题讨论】:
这也适用于用下划线替换除数字、单词字符或句点之外的任何内容。对文件名很有用。
$clean = preg_replace('/[^\d\w.]+/', '_', $string);
【讨论】:
$string = preg_replace("/[^a-z0-9.]+/i", "", $string);
匹配一个或多个非 a-z 0-9 [不区分大小写] 或“.”的字符并替换为“”
【讨论】:
+ 符号吗?有人在下面发帖,没有+ 符号。
"-")。使用+,它会将"test$!§test" 更改为"test-test"。如果没有"+",它将更改为"test---test"
/[^a-z0-9.]/
应该做的伎俩
【讨论】:
我喜欢为此使用 [^[:alnum:]],这样可以减少出错的空间。
preg_replace('/[^[:alnum:]]/', '', "(ABC)-[123]"); // returns 'ABC123'
【讨论】:
试试:
$string = preg_replace ('/[^a-z0-9]/i', '', $string);
/i 代表不区分大小写(当然,如果你需要的话)。
【讨论】: