특정 검색만 대소문자 구분되게

특정 검색만 대소문자 구분되게

QA

특정 검색만 대소문자 구분되게

답변 1

본문

php 검색은 원래 알파벳 대소문자 구분 안하나요?
 

john 으로 검색해도 John 이가 나오네요??
 

자바 스크립트랑 너무 엉키네요.

 

5글자 이하고, 앞에 a 로 시작할때만 php 검색시 대소문자 구분되게 할려면 어떻게 해야 하나요?

이 질문에 댓글 쓰기 :

답변 1

php가 아니고 mysql에서 대소문자를 구분하지 않습니다 

https://zetawiki.com/wiki/MySQL_대소문자_구별

대소문자를 구분하려면 칼럼을 binary로 변경 후 비교 

https://dev.mysql.com/doc/refman/5.6/en/cast-functions.html#operator_binary

 

그누보드에서 검색 부분

https://github.com/gnuboard/gnuboard5/blob/master/bbs/search.php#L98

이 부분을 


                        if (preg_match("/^[a]/", $search_str) && strlen($search_str) === 5) 
                            $str .= "INSTR(BINARY({$field[$k]}), '{$search_str}')";
                        else 
                            $str .= "INSTR(LOWER({$field[$k]}), LOWER('{$search_str}'))";

 

소문자 a로 시작하는 3자리
((INSTR(LOWER(wr_subject), LOWER('arr')) or INSTR(LOWER(wr_content), LOWER('arr'))))

3696253845_1612399707.6044.png
 

소문자 a로 시작하는 5자리
((INSTR(BINARY(wr_subject), 'array') or INSTR(BINARY(wr_content), 'array')))

3696253845_1612399752.648.png

 

대문자 A로 시작하는 5자리
((INSTR(LOWER(wr_subject), LOWER('Array')) or INSTR(LOWER(wr_content), LOWER('Array'))))

3696253845_1612399769.8767.png

 

소문자 a로 시작하지 않는 검색어
((INSTR(LOWER(wr_subject), LOWER('test')) or INSTR(LOWER(wr_content), LOWER('test'))))
3696253845_1612399785.2867.png

 

 

그누보드 코어를 변경하는 일이고 

상당히 제한적이므로 수정하는 걸 추천하지는 않습니다 

array를 검색하는 사람이 대소문자를 구분해서 검색하는지 아닌지 

프로그램이 판단할 수 없기 때문인데요 

array로 검색시 대문자로 시작된 Array 검색 결과를 보고 싶을 수도 있다는 얘기죠 

그래서 제가 적어드린 코드는 비추고요 

제대로 하려면 검색시 대소문자 구분 체크박스를 만들어서 

사용자가 선택하게끔 해야 좋을 것 같아요 

 

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 125,873
© SIRSOFT
현재 페이지 제일 처음으로