2016-12-08 2 views
1

문자열의 일부가 있습니다. 몇 개의 심볼을 추가 할 때 다른 문자열과 같은지 확인해야합니다. 그러나 구분 기호를 사용하면 성냥을 허용하지 않습니다.preg_match 결과를 읽지 못함 : 구분 기호 문제?

내 IF 문 :

if (preg_match("{" . "$words[$counter_words]" . "[<]N}", "$corpus[$counter_corpus]")) 

내 코퍼스 :

dog 
cat 
3-D 
plant 

내 목표와 "개"와 일치하는 것입니다 다음과 같이

{3(-)D[<]AN} 
{dog[<]N} 
{4(-)H(')er[<]N} 
{4(-)H[<]A} 
{A battery[<]h} 

내 부분 배열이 "{개 [<] N} "([] 및 {}는 구분 기호입니다). 이를 보완하기 위해 문자열의 시작과 끝 부분에 구분 기호를 붙입니다. Preg_match는이를 받아들이지 만 둘을 일치시키지 않습니다.

어떻게 해결할 수 있습니까? 나는 해결책을 찾거나 생각할 수 없다. 귀하의 도움을 크게 주시면 감사하겠습니다.

+0

일치하는 특수 문자를 이스케이프 처리해야합니다. –

+0

알겠습니다. "{"에서 "/ {/"로 바꾸시겠습니까? "[N]"은 무엇이 될까요? "/ [<]/N /} /"? – drewtoby

+0

그럴까요? 나는 그것을 발견하기 위해 시험해 보도록 권할 것이다 –

답변

0
if (preg_match("{" . $words[$counter_words] . "\\[<\\]N}", $corpus[$counter_corpus])) 

[] 정규 표현식에서 특별한 의미가있다. 특별한 의미를 원하지 않으면 그들을 벗어나야합니다. \[. 그러나 이것은 PHP 문자열 안에 있기 때문에 \ 문자를 얻으려면 \\을 입력해야합니다.

+1

또는 preg_quote()를 사용하십시오. –

+0

감사합니다! 나는 도망쳐 야 할까?} – drewtoby

+0

특수 정규 표현식 문자는 다음과 같습니다. \ + *? [^] $() {} =! < > | : - –