2012-01-20 4 views
7

그러나 매치하지 않을 때마다 완벽한 일치를 반환합니다 ... 문자열이 일치하는 경우에만 정확하게 일치하는 문자열을 얻을 수없는 것 같습니다. 쪽으로.PHP 정확하게 일치하는 문자열

보드 코드와 정규식 패턴을 사용하여 약간 복잡하게하려고하면 악몽이됩니다. 포스트는 인용 태그 포함 된 경우

if ($check = '/\[quote(.*?)\](.*?)\[\/quote\]/su') { 
$spam['spam'] = true; 
$spam['error'] .= 'Spam post quote.<br />'; 
} 

그래서 스팸으로 간주하고 도랑을하지만 난 그게 아마 내 패턴이 잘못 해결할 수없는 것 될 것이다.

+0

까지 완화 downvoter 작동 예! –

+0

+1은 과제의 가치를 되돌릴 수있는 언어의 매우 실제적인 결과/함정이기 때문에 +1합니다. – Joe

+0

@RobAgar이 _really_는 디버깅 101입니다. 업 보턴은 upvote 버튼 위로 마우스를 가져 가면 "연구 노력을 보여주는 유용한 질문"을 볼 수 있습니다. 둘 다 여기에 적용되지 않습니다. – CodeCaster

답변

2

등호 연산자 == 대신 할당 연산자 =을 사용하고 있습니다.

당신은, 항상 true를 돌려

if ($check == 'this is a string') { 
2

if ($check = 'this is a string') 항상 정의되므로되어 $check 변수에 문자열을 할당 사용해야하는

당신은 사용할 필요가 if ($check == 'this is a string')

+0

'항상 정의되어 있으므로 항상 true를 반환합니다. '- 완전히 사실이 아닙니다. if ($ check = 0)하면 false로 평가됩니다. 여기서 실제로 일어날 것은 PHP가 표현식의 오른쪽을 부울로 평가한다는 것입니다. – DaveRandom

+0

정확한 것이지만 비어 있지 않은 문자열을 할당하는 한 실제 동등한 것으로 평가됩니다. === – dweeves

+0

... 캐릭터가 아닌' '0'' – DaveRandom

10

할 필요가있는 경우 == 그냥 아니요 =

$check = 'this is a string 111'; 
if ($check == 'this is a string') { 
echo 'perfect match'; 
} else { 
echo 'it did not match up'; 
} 

=은 변수를 할당합니다.

==

자세한 내용은 comparison operators를 참조 엄격한 비교를 할 것입니다 느슨한 비교

=== 할 것입니다.

+1

으로 복잡하게 일을 시작할 때 ') 연산자를 사용합니다. 그렇지 않으면 다음과 같이됩니다.'if ('123'== 123)' –

+0

기본 문자열에서 작동하지만 정규식 패턴을 사용하여 복잡한 작업을 시작할 때 감사합니다. – C0nw0nk

+0

그래, 문자열 비교는 regex ... preg_match - http://php.net/manual/en/function.preg-match.php를 할 필요가있다. – Nick

3

동등한 비교를 원할 경우 == 연산자를 사용하십시오. =은 과제입니다.

if ($check = 'this is a string') { 

if ($check == 'this is a string') { 

걱정하지 마세요해야한다, 우리는 그것을 한 적이. 나는 아직도 :

2

== 비교 연산자는 대부분의 경우 작동하지만 일부 경우에는 정확하게 일치하지 않습니다 *.

=== 연산자를 사용하는 것이 가장 좋습니다.

if ($check === 'this is a string') { 

==가 예기치 않게

$check = '2'; 
if ($check == '   2') { 
관련 문제