我正在购买带有优惠券的购物车,店主告诉我,顾客似乎不愿意使用适当的套管来发行优惠券,并且不断抱怨优惠券不起作用的工作人员。
我最初只是简单地strtoupper()用户输入,但这将要求所有者只使用大写的优惠券代码,这是没有意义的。
我想对用户输入执行preg_match(),如果所有字符都正确则完全允许它匹配并完全忽略大小写。但是唉...我不知道如何使用正则表达式来获得我需要的东西。
这就是我现在所拥有的:
strtoupper ($this->request->post['coupon'])
正如我所说,这对数据库中的大写优惠券代码有效,但会强制所有者将所有代码大写。
非常感谢任何帮助。
-V
答案 0 :(得分:6)
只需将两者转换为相同的案例并进行比较:
if(strtolower($input) == strtolower($check))
更好的是,使用strcasecmp()
进行二进制安全的不区分大小写的字符串比较:
if (strcasecmp($input, $check) == 0)
答案 1 :(得分:1)
这取决于您如何查看优惠券代码。如果您正在运行数据库查询,SQL和朋友允许您执行不区分大小写的查询。如果您将它们逐个进行比较,例如配置文件,而不是说if (code_entered === valid_code)
,而是说if (strtolower(code_entered) === strtolower(valid_code))
。否则,我们需要知道实际比较是如何发生的,因为这是重要的部分。
答案 2 :(得分:0)
“这将要求所有者仅使用大写的优惠券代码和 这毫无意义。“
从您描述您的情况的方式来看,实际确实似乎有意义地将这些优惠券代码存储在一致的情况下(上部或下部)以匹配一致的情况({{1}客户输入的'd或strtoupper
'd)。
也就是说,使用strtolower
修饰符实现了regexp不区分大小写的匹配。
但已经提出的/i
很可能是更好的解决方案。