首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Preg同时匹配大小写用户输入

Preg同时匹配大小写用户输入
EN

Stack Overflow用户
提问于 2012-09-29 04:16:29
回答 3查看 526关注 0票数 0

我正在开发一款有优惠券的购物车,店主告诉我,顾客似乎不愿意使用合适的外壳来存放发放的优惠券,而且不断抱怨优惠券不起作用,这让工作人员很恼火。

我最初打算简单地对用户输入执行strtoupper(),但这将要求所有者只使用大写优惠券代码,这没有任何意义。

我想对用户输入做一个preg_match(),如果所有字符都正确,就让它匹配,并完全忽略大小写。但可惜的是...我不知道如何使用正则表达式来获得我需要的东西。

这是我现在所拥有的:

代码语言:javascript
复制
strtoupper ($this->request->post['coupon'])

正如我所说的,这对于来自数据库的大写优惠券代码非常有效,但会迫使所有者将其所有代码都大写。

任何帮助都将不胜感激。

-V

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-29 04:21:01

这取决于您如何检查优惠券代码。如果您正在运行数据库查询,SQL和朋友允许您执行不区分大小写的查询。如果您将它们逐个与配置文件进行比较,那么不要说if (code_entered === valid_code),而要说if (strtolower(code_entered) === strtolower(valid_code))。否则,我们需要知道实际的比较是如何发生的,因为这是重要的部分。

票数 1
EN

Stack Overflow用户

发布于 2012-09-29 04:20:45

只需将两者转换为相同的大小写并进行比较:

代码语言:javascript
复制
if(strtolower($input) == strtolower($check))

更好的方法是,使用strcasecmp()进行二进制安全、不区分大小写的字符串比较:

代码语言:javascript
复制
if (strcasecmp($input, $check) == 0)
票数 6
EN

Stack Overflow用户

发布于 2012-09-29 04:22:38

“这将要求所有者只使用大写优惠券代码,这是没有意义的。”

从您描述您的情况的方式来看,以一致的大小写(大写或小写)存储这些优惠券代码以匹配客户输入的一致大小写( strtoupper'd或strtolower'd)实际上似乎是有意义的。

也就是说,正则表达式不区分大小写的匹配是使用/i修饰符实现的。

但是,已经提出的strcasecmp()很可能是一个更好的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12646810

复制
相关文章

相似问题

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