2013-05-12 2 views
0

PHP에서 가장 어려운 것은 지금까지 preg_match() 패턴입니다. "n"문자 또는 "q"문자로 시작하고 뒤에 숫자가있는 id 변수를 전달합니다. 예를 들어간단한 preg_match() 패턴이 필요합니다. PHP

$id = $_POST['id']; 

echo $id; 

output: n123 

지금, 나는 특정 문자가 id 숫자 앞에있을 때 실행하는 다른 기능이 필요합니다. preg_match()으로 어떻게이 작업을 수행 할 수 있습니까? id 수는 1 개 INT 6 INT 사이에,

$n_pattern = '/n[^0-9]/'; 
$q_pattern = '/q[^0-9]/'; 

하지만 그것은 BTW : 올바른 아니라고 확신 때문에 나는 심지어 그것을 밖으로 시도하지 않았다 : 나는 ... 무언가를 시작했습니다 그래서 나는 그들을 모두 일치시켜야 할 것이다. (내가 정확히 말했는지 모르겠다 ... id은 1에서 999999 사이의 숫자 일 수있다).

+0

'n00000009'와 같은 ID도 '확인'으로 간주 되나요? 또는 'n9'만? – thaJeztah

+0

아니요, SQL이 자동 증가하므로 000000009가 가능하지 않습니다. –

답변

1

당신이해야 어울리는이 정규식 :

/^[qn]\d{1,6}$/ 

귀하의 의견은 1 ~ 6 자리 숫자 다음에 문자 Q 또는 n으로 시작 할 수 있음을 의미합니다.

+0

그래서 "q"와 "n"을위한 별도의 하나는 /^ [n] \ d {1,6} $ /와 /^ [q] \ d {1,6} $가 될 것입니다. /? –

+0

네, 맞습니다.'/^n \ d {1,6} $ /'OR'/^q \ d {1,6} $ /'''' – anubhava

1

또 다른 간단한 해결책은 첫 번째 문자를 감지하고 두 번째 부분이 숫자/정수인지 확인하는 것입니다.

$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 
}