从 PHP 中的字符串中删除除字母数字字符之外的所有内容
Posted
技术标签:
【中文标题】从 PHP 中的字符串中删除除字母数字字符之外的所有内容【英文标题】:Stripping everything but alphanumeric chars from a string in PHP 【发布时间】:2010-10-24 20:47:23 【问题描述】:我想要一个正则表达式或其他字符串,它可以替换字符串中除字母数字字符(a-z
和0-9
)之外的所有内容。所有诸如,@#$(@*810
之类的东西都应该被剥离。有什么想法吗?
编辑:我现在需要它来去除所有内容,但允许点,所以除了a-z, 1-9, .
之外的所有内容。想法?
【问题讨论】:
【参考方案1】:这也适用于用下划线替换除数字、单词字符或句点之外的任何内容。对文件名很有用。
$clean = preg_replace('/[^\d\w.]+/', '_', $string);
【讨论】:
【参考方案2】:$string = preg_replace("/[^a-z0-9.]+/i", "", $string);
匹配一个或多个非 a-z 0-9 [不区分大小写] 或“.”的字符并替换为“”
【讨论】:
我怎样才能改变它只允许点(即)? 字符集中的点不需要转义。 您真的需要+
符号吗?有人在下面发帖,没有+
符号。
@kuchi:非常老的问题,但我刚刚遇到它:如果你用空字符串替换它并没有什么区别。如果你用其他东西代替它确实会有所作为,比如破折号("-"
)。使用+
,它会将"test$!§test"
更改为"test-test"
。如果没有"+"
,它将更改为"test---test"
【参考方案3】:
/[^a-z0-9.]/
应该做的伎俩
【讨论】:
我怎样才能改变它只允许点(即)? 请填写完整的正则表达式?我不知道语法【参考方案4】:我喜欢为此使用 [^[:alnum:]],这样可以减少出错的空间。
preg_replace('/[^[:alnum:]]/', '', "(ABC)-[123]"); // returns 'ABC123'
【讨论】:
【参考方案5】:试试:
$string = preg_replace ('/[^a-z0-9]/i', '', $string);
/i 代表不区分大小写(当然,如果你需要的话)。
【讨论】:
以上是关于从 PHP 中的字符串中删除除字母数字字符之外的所有内容的主要内容,如果未能解决你的问题,请参考以下文章
从 Python3.3 中的字符串中删除除字母和空格之外的所有内容
如何从python中的unicode字符串中删除除数字和“,”之外的所有字符?