2013-09-11 4 views
0

현재 PHP에서 빈 문자열에 대한 일치를 얻으려고합니다.이 현재 실행은 not이고 비어 있습니다. ''과 일치해야하지만 어떤 이유로 인해 not과 일치 할 수 있습니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?빈 경계와 단어 경계가 일치합니다.

preg_match('/^\bnot|$/', 'not', $matches); 
print_r($matches); // array(0 => 'not') // correct 

preg_match('/^\bnot|$/', '', $matches); 
print_r($matches); // array(0 => '') // maybe right ? 

preg_match('/^\bnot|$/', 'foo', $matches); 
print_r($matches); // array(0 => '') // deff messed up 
+0

여기 정확히 일치시키려는 대상은 무엇입니까? 당신의 주제의 시작 다음 낱말 경계는 불필요하다; 왜'if ($ str == 'not')'가 아닌가? 아니면 문자열이 'not'으로 시작해야합니까? –

답변

1

빈 문자열을 잘못 일치 시키려고했기 때문입니다. 귀하의 정규 표현식이 있어야합니다.

^$|pattern 

그리고 \b (워드 경계)로, 이것은 \W (비 단어 문자)에 \w (단어 문자)에서 일치

. 실제로는 제로 너비 일치 (빈 문자열)이지만 단어 경계의 특정 위치에있는 문자열 만 일치합니다.

+0

정확히 내가 무엇을 찾고 있었습니까, 정말 고맙습니다 =) – ehime

0

문자열이 비어 있는지 확인하려면 preg_match를 사용하지 마십시오. strlen()을 사용하십시오.

$string = ''; 
$strlen = strlen($string); 
if ($strlen === 0) { 
    // $string is empty 
} 
+0

정규 표현식이어야합니다. 작동하지 않습니다. – ehime

관련 문제