Preg匹配大写和小写用户输入

时间:2012-09-28 20:16:29

标签: php regex

我正在购买带有优惠券的购物车,店主告诉我,顾客似乎不愿意使用适当的套管来发行优惠券,并且不断抱怨优惠券不起作用的工作人员。

我最初只是简单地strtoupper()用户输入,但这将要求所有者只使用大写的优惠券代码,这是没有意义的。

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

这就是我现在所拥有的:

strtoupper ($this->request->post['coupon'])

正如我所说,这对数据库中的大写优惠券代码有效,但会强制所有者将所有代码大写。

非常感谢任何帮助。

-V

3 个答案:

答案 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很可能是更好的解决方案。