从 PHP 中的字符串中删除除字母数字字符之外的所有内容

Posted

技术标签:

【中文标题】从 PHP 中的字符串中删除除字母数字字符之外的所有内容【英文标题】:Stripping everything but alphanumeric chars from a string in PHP 【发布时间】:2010-10-24 20:47:23 【问题描述】:

我想要一个正则表达式或其他字符串,它可以替换字符串中除字母数字字符(a-z0-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中字符串中除字母之外的所有字符?

如何从python中的unicode字符串中删除除数字和“,”之外的所有字符?

PHP 删除字符串中除数字之外的所有内容

用于从字符串中删除除“a”和“i”之外的所有单个字母的 Java 正则表达式 [关闭]

从字符串中删除非数字字符(不包括句点和逗号)(即删除除数字、逗号和句点之外的所有字符)