我正在开发一款有优惠券的购物车,店主告诉我,顾客似乎不愿意使用合适的外壳来存放发放的优惠券,而且不断抱怨优惠券不起作用,这让工作人员很恼火。
我最初打算简单地对用户输入执行strtoupper(),但这将要求所有者只使用大写优惠券代码,这没有任何意义。
我想对用户输入做一个preg_match(),如果所有字符都正确,就让它匹配,并完全忽略大小写。但可惜的是...我不知道如何使用正则表达式来获得我需要的东西。
这是我现在所拥有的:
strtoupper ($this->request->post['coupon'])正如我所说的,这对于来自数据库的大写优惠券代码非常有效,但会迫使所有者将其所有代码都大写。
任何帮助都将不胜感激。
-V
发布于 2012-09-29 04:21:01
这取决于您如何检查优惠券代码。如果您正在运行数据库查询,SQL和朋友允许您执行不区分大小写的查询。如果您将它们逐个与配置文件进行比较,那么不要说if (code_entered === valid_code),而要说if (strtolower(code_entered) === strtolower(valid_code))。否则,我们需要知道实际的比较是如何发生的,因为这是重要的部分。
发布于 2012-09-29 04:20:45
只需将两者转换为相同的大小写并进行比较:
if(strtolower($input) == strtolower($check))更好的方法是,使用strcasecmp()进行二进制安全、不区分大小写的字符串比较:
if (strcasecmp($input, $check) == 0)发布于 2012-09-29 04:22:38
“这将要求所有者只使用大写优惠券代码,这是没有意义的。”
从您描述您的情况的方式来看,以一致的大小写(大写或小写)存储这些优惠券代码以匹配客户输入的一致大小写( strtoupper'd或strtolower'd)实际上似乎是有意义的。
也就是说,正则表达式不区分大小写的匹配是使用/i修饰符实现的。
但是,已经提出的strcasecmp()很可能是一个更好的解决方案。
https://stackoverflow.com/questions/12646810
复制相似问题