需要一个简单的preg_match()模式PHP
到目前为止,PHP中最难的事情是需要一个简单的preg_match()模式PHP,php,Php,到目前为止,PHP中最难的事情是preg\u match()模式。我传递一个id变量,该变量以“n”字母或“q”字母开头,后面有数字。比如说 $id = $_POST['id']; echo $id; output: n123 现在,当某个字母在id数字前面时,我需要运行不同的函数。 如何使用preg_match()实现这一点?我开始做点什么…: $n_pattern = '/n[^0-9]/'; $q_pattern = '/q[^0-9]/'; 但我甚至没有尝试过,因为我确信这是不对
preg\u match()
模式。我传递一个id
变量,该变量以“n”字母或“q”字母开头,后面有数字。比如说
$id = $_POST['id'];
echo $id;
output: n123
现在,当某个字母在id
数字前面时,我需要运行不同的函数。
如何使用preg_match()
实现这一点?我开始做点什么…:
$n_pattern = '/n[^0-9]/';
$q_pattern = '/q[^0-9]/';
但我甚至没有尝试过,因为我确信这是不对的:)
顺便说一句,
id
号介于1 int和6 int之间,所以我需要将它们全部匹配起来。(不知道我说的是否正确……假设id
可以是1到999999之间的任何数字) 您应该为您的比赛使用此正则表达式:
/^[qn]\d{1,6}$/
这意味着您的输入可以以字母q或n开头,后跟1到6位数字。另一个简单的解决方案是检测第一个字符,并验证第二部分是否为数字/整数
$type = $id{0}; // first character of the id (n, q)
$number = (int) substr($id, 1); // rest of the id
要验证“类型”是否正确,可以使用以下内容:
if (!in_array($type, array('n', 'q')) {
// invalid type
}
像“n00000009”这样的id是否也应被视为“ok”?或者只有“n9”?不,SQL是自动递增的,所以不可能有00000009。所以“q”和“n”分别是:/^[n]\d{1,6)$/和/^[q]\d{1,6)$/?是的,这是正确的,您可以简单地使用
/^n\d{1,6}$/
或/^q\d{1,6}$/
抱歉,它以/code>结束,而不是