PHP如何检查字符串格式是否正确

6

我有一个PHP应用程序,需要一个特殊的激活密钥才能解锁。 因此,我想创建脚本来检查$user_input是否格式正确。

激活密钥将是这样的:
1E63-DE12-22F3-1FEB-8E1D-D31F

数字和字母间距可能会有所不同。
因此,激活密钥也可能是这样的或者不同:
1EE3-1E1C-R21D-1FD7-111D-D3Q5

  1. 冒号用“-”分隔
  2. 每个冒号包含4个字符,混合了字母和数字

感谢您提前的任何帮助 :)


1
我会使用正则表达式来处理这个问题,可以参考这个问题:http://stackoverflow.com/questions/2428343/regex-for-product-key - younes0
3
为什么需要检查代码是否格式良好?因为如果它们不匹配,无论是格式还是代码本身,它都将无法运行。然而,我建议,如果您希望用户以这种格式输入,请使用6个文本框,每个文本框限制最多4个字符,然后在接收输入时将其用“-”连接起来。 - Royal Bg
这只是用于格式检查,之后输入将进行进一步的检查。无论如何,您的建议/想法非常好,我可能会使用它。谢谢。 - xZero
2个回答

15

你需要使用正则表达式来完成。我在这里测试了这个正则表达式:http://www.phpliveregex.com/


<?php

$key   = '1E63-DE12-22F3-1FEB-8E1D-D31F';
$regex = '^[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}$';

if (preg_match($regex, $key)) {
    echo 'Passed';
} else {
    echo 'Wrong key';
}

5
这次修改后工作得很好。如果不修改,它会抛出错误“Warning: preg_match(): No ending delimiter '^' found”,所以我对它进行了修改,变成了这样:$regex = '/^[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}$/';谢谢,你的脚本完全符合我的要求。 - xZero

2

这个正则表达式将匹配像你发布的那样的键,并且也可以在包含小写字母的情况下工作:

^([A-z0-9]){4}-([A-z0-9]){4}-([A-z0-9]){4}-([A-z0-9]){4}-([A-z0-9]){4}-([A-z0-9]){4}$

如果您只想要大写字母,请将正则表达式中所有的“z”替换为“Z”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接