首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从PHP字符串中剔除a-zA-Z0-9、_和-以外的字符

问从PHP字符串中剔除a-zA-Z0-9、_和-以外的字符
EN

Stack Overflow用户
提问于 2011-02-16 09:37:30
回答 4查看 4.6K关注 0票数 2

我想停止所有与这个正则表达式模式不匹配的字符:[a-zA-Z0-9_-]。

通常我会这样做:

代码语言:javascript
复制
preg_replace("[a-zA-Z0-9_-]", "", $var);

但很明显,这对我想要的东西有相反的效果。正则表达式中是否存在NOT?我怎样才能去掉与模式不匹配的字符呢?

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-16 09:46:15

这一点:

代码语言:javascript
复制
preg_replace("[a-zA-Z0-9_-]", "", $var);

甚至不会替换这些字符,除非输入的字符串与模式完全相同。通过使用[]作为分隔符,它们与表达式本身中的分隔符的效果不同。您可以更改分隔符(例如:/),或者在模式中添加更多的括号:

代码语言:javascript
复制
preg_replace("/[a-zA-Z0-9_-]/", "", $var);    // this works
preg_replace("[[a-zA-Z0-9_-]]", "", $var);    // this too

现在,要在[]中否定模式,您可以在开头使用^:

代码语言:javascript
复制
preg_replace("/[^a-zA-Z0-9_-]/", "", $var);

您还可以使用不敏感修饰符i来匹配小写(a-z)和大写(A-Z):

代码语言:javascript
复制
preg_replace("/[^a-z0-9_-]/i", "", $var);   // same as above
票数 9
EN

Stack Overflow用户

发布于 2011-02-16 09:39:35

[^a-zA-Z0-9_-]应该为你做这件事。请注意括号内的^。

票数 0
EN

Stack Overflow用户

发布于 2011-02-16 09:40:46

在字符前面加一个^字符如何:

代码语言:javascript
复制
preg_replace( '[^a-zA-Z0-9_-]", "", $var);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5011640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档