Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要一个简单的preg_match()模式PHP_Php - Fatal编程技术网

需要一个简单的preg_match()模式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]/'; 但我甚至没有尝试过,因为我确信这是不对

到目前为止,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]/';
但我甚至没有尝试过,因为我确信这是不对的:)
顺便说一句,
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>结束,而不是